Yesterday

ПОЛНЫЙ ГАЙД по Hermes Agent: Архитектура, Настройка и Самообучающиеся Циклы

✍️ Перевод: https://x.com/ScottyBeamIO/status/2066885278451519590?s=20
🦧 Подпишись на канал: https://t.me/cryptomokakke
📚 Больше статей: https://t.me/smart_sorting

Формируется новая категория инструментов искусственного интеллекта: агенты, которые живут не в окне чата, открываемом и закрываемом вами, а работают непрерывно в облаке и общаются с вами через мессенджер, подобно коллеге, который никогда не выходит из сети.

Hermes — одна из наиболее интересных реализаций этой идеи. От сопоставимых агентов, таких как OpenClaw, его отличает встроенный цикл самосовершенствования — система, которая отслеживает ваши диалоги, извлекает из них полезные паттерны и превращает эти паттерны в постоянные обновления для своей собственной памяти и набора навыков.

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

Что такое Hermes и чем он отличается от OpenClaw

Hermes — это размещенный в облаке ИИ-агент, конструктивно схожий с OpenClaw: он работает в режиме 24/7, а взаимодействие с ним происходит через приложение для обмена сообщениями, а не через терминал или вкладку браузера.

Существенные различия носят тройственный характер.

  • Во-первых, Hermes поставляется с гораздо более обширной встроенной библиотекой готовых навыков «из коробки», благодаря чему вы тратите меньше времени на самостоятельную настройку интеграций.
  • Во-вторых, процесс первоначальной настройки значительно более упрощен — управляемый текстовый пользовательский интерфейс (TUI) берет на себя практически всё.
  • В-третьих, и это самое главное, Hermes спроектирован на основе концепции непрерывного самосовершенствования: он не просто выполняет задачи, а со временем накапливает процедурные знания о том, как выполнять их эффективнее.

Установка и первоначальная настройка

Запуск Hermes выполняется одной командой.

На Windows запустите следующую команду в PowerShell:

PowerShell

iex (irm https://hermes-agent.nousresearch.com/install.ps1)

На Linux, macOS или WSL эквивалентом является:

Bash

curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash

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

Выбор и маршрутизация моделей

Первым реальным решением при настройке является выбор провайдера LLM (большой языковой модели), которая будет приводить в действие «мозг» агента. Аутентификация происходит через OAuth, а не с помощью чистых API-ключей, что в том числе дает возможность авторизоваться через существующую сессию Claude Code или Codex CLI вместо генерации отдельного API-ключа.

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

К задачам, поддерживающим такой тип переопределения, относятся:

  • vision — анализ и описание изображений
  • web_extract — реферирование длинных веб-страниц
  • compression — сжатие переполняющегося контекста беседы
  • title_generation — генерация названий сессий
  • curator — фоновый агент, отвечающий за самообучающийся цикл
  • kanban_decomposer — разбиение крупных задач на подзадачи в режиме Канбан-доски
  • goal_judge — агент, который проверяет, была ли на самом деле достигнута цель, заданная через команду /goal

Это настраивается непосредственно в файле config.yaml, например:

YAML

# Primary model for chat and complex reasoning
model:
  provider: "anthropic"
  default: "claude-4-8-sonnet"
  auxiliary:
    vision:
      provider: "gemini"
      model: "gemini-2.5-flash"
    compression:
      provider: "custom"
      base_url: "http://localhost:11434/v1"
      api_key: "none"
      model: "qwen2.5:32b"

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

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

Стоит также отметить, что если вы хотите сэкономить на разговорной модели без ущерба для качества кодинга, Hermes поддерживает команды /claude_code и /codex. Они делегируют задачи по написанию кода напрямую этим CLI-инструментам (интерфейсам командной строки) вместо того, чтобы обрабатывать их с помощью настроенной чат-модели.

Терминальные бэкенды

Важной частью архитектуры является среда терминального бэкенда (Terminal Backend Environment), которая определяет, где и как на самом деле выполняются команды командной строки и сценарии Python, а также то, как агент взаимодействует с вашей файловой системой. Hermes поддерживает пять таких сред.

Local (локальная среда) используется по умолчанию. Команды выполняются прямо на вашей машине с теми же правами, что и у вашей учетной записи пользователя, — без какой-либо изоляции. Это правильный выбор для локальной разработки и доверенного личного использования, когда вам нужно, чтобы агент редактировал ваши реальные файлы проекта. Безопасность в данном случае полностью опирается на встроенную систему подтверждений, которая перехватывает деструктивные команды (например, rm -rf / или DROP TABLE) и запрашивает явное разрешение перед их запуском.

Docker запускает агента внутри изолированной песочницы, благодаря чему он не может затронуть вашу хост-систему.

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

Modal запускает всё в бессерверных облачных песочницах — по сути, вы арендуете вычислительные мощности с посекундной тарификацией, оплачивая только те секунды, в течение которых действительно работает ваш код.

Daytona представляет собой слой управления контейнерами, специально разработанный для ИИ-агентов кодинга; он работает быстрее, чем запуск Docker напрямую, и автоматически берет на себя настройку среды и установку зависимостей.

Для большинства сценариев личного использования среды Local действительно достаточно — остальные варианты имеют значение главным образом в том случае, если вы запускаете ненадежный код или работаете в масштабах команды.

Шлюз обмена сообщениями и конфигурация инструментов

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

Оставшаяся часть настройки посвящена включению отдельных инструментов и выбору их соответствующих провайдеров — автоматизации браузера, генерации изображений, синтеза речи (text-to-speech) и веб-поиска. Что касается конкретно веб-поиска, то самостоятельно размещаемый (self-hosted) Firecrawl или Exa выделяются как отличные варианты для ориентированного на агентов скрапинга и извлечения данных.

Для включения поиска в X (Twitter) требуется подписка на Grok, о чем стоит знать до того, как вы начнете искать этот пункт в меню.

Команды со слешем (/), о которых стоит знать

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

  • /background <промпт> запускает задачу в фоновом режиме, не прерывая вашу основную сессию.
  • /goal задает долгосрочную цель, к которой агент упорно продвигается, и содержит подкоманды для приостановки, возобновления, очистки или проверки статуса.
  • /subgoal управляет более мелкими задачами, вложенными в активную цель.
  • /kanban координирует асинхронную, длительную работу силами нескольких независимых агентов — функционируя как настоящая Канбан-доска, где пул задач распределяется между агентами-исполнителями и перемещается по колонкам «к исполнению», «в работе» и «готово» по мере передачи задач от одного к другому.

Что касается разработки:

  • /github_pr_workflow берет на себя полный цикл от создания ветки до слияния (merge), включая CI (непрерывную интеграцию).
  • /github_code_review рецензирует пул-реквесты.
  • /codebase_inspection анализирует кодовую базу репозитория, распределяя ее по языкам программирования и подсчитывая количество строк.
  • /dogfood — это выделенный режим контроля качества (QA), который ищет баги в веб-приложении и формирует отчет, подкрепленный доказательствами.
  • /spike запускает быстрый, одноразовый эксперимент для проверки идеи перед тем, как приступать к полноценной разработке.
  • /systematic_debugging устраняет баги в четыре этапа, выявляя первопричину до попытки внедрения исправления.

Также присутствует группа команд для конкретных интеграций: /notion, /obsidian, /airtable, /google_workspace, /arxiv, /blogwatcher, /polymarket, /ocr_and_documents, /youtube_content — каждая из них инкапсулирует определенный внешний сервис или рабочий процесс. Кроме того, есть команда /bundles, которая объединяет несколько существующих навыков под одной командой со слешем с помощью небольших конфигурационных файлов YAML.

Задачи по расписанию (Cron-задачи) и вебхуки

Два примитива автоматизации заслуживают особого внимания.

Cron-задачи позволяют планировать запуск скрипта по таймеру. Если при создании такой задачи передать флаг -no-agent, Hermes выполнит обычный скрипт на Python или bash и просто перенаправит его вывод в ваш мессенджер, вообще не затрачивая токены LLM.

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

Движки контекста (Context Engines)

Движок контекста определяет, как Hermes сжимает и управляет историей диалога, когда она приближается к лимиту токенов модели. На выбор доступно два варианта.

Compressor (используется по умолчанию) применяет сжатие с потерями (lossy summarization) к средней части длинного диалога.

Альтернатива — LCM (Lossless Context Management) — использует принципиально иной подход: вместо создания текстового резюме этот движок строит направленный ациклический граф ключевых точек беседы. Это позволяет агенту переходить от высокоуровневого, сильно сжатого представления к конкретным исходным сообщениям, которые его подтверждают.

Движки памяти (Memory Engines)

Внешние провайдеры памяти работают параллельно со встроенными локальными файлами памяти Hermes — MEMORY.md и USER.md, добавляя такие возможности, как семантический поиск и графы знаний. Некоторые из них можно настроить напрямую через текстовый интерфейс (TUI) настройки.

  • Honcho построен на моделировании детального профиля пользователя, используя фоновые вызовы LLM для синтеза наблюдений на двух уровнях: базовом уровне (резюме сессий и профили) и диалектическом уровне, который анализирует текущие потребности пользователя.
  • OpenViking — это база данных контекста, которая выстраивает иерархию знаний по типу файловой системы. Она поддерживает многоуровневое извлечение контекста и автоматически сортирует извлеченные факты по шести категориям (события, паттерны, предпочтения и т. д.) в конце каждой сессии.
  • Mem0 представляет собой полностью управляемый облачный сервис памяти. Извлечение фактов происходит на стороне сервера с помощью LLM; сервис включает семантический поиск, реранжирование (изменение порядка) результатов и автоматическое удаление дубликатов. Поскольку он размещается в облаке, это единственный вариант здесь с периодической (подписной) оплатой.
  • Hindsight — более продвинутая система долговременной памяти, построенная на графе знаний в стиле GraphRAG. Она извлекает сущности из сессий, выстраивает связи между ними и сохраняет полные диалоговые реплики, включая вызовы инструментов. Память здесь разделена на четыре категории: факты о мире, собственный опыт агента, мнения и наблюдения.
  • Holographic — это локальное хранилище фактов на базе SQLite без внешних зависимостей. Оно включает систему оценки достоверности сохраненных фактов и использует голографические сокращенные представления (Holographic Reduced Representations) для поддержки алгебраических, композиционных запросов с возможностью автоматического обнаружения противоречий в своей базе знаний.
  • RetainDB — облачный API для командной памяти, предлагающий гибридный поиск, сочетающий векторный метод, алгоритм BM25 и методы реранжирования. Память разделена на семь различных типов и использует дельта-сжатие для эффективного хранения.
  • ByteRover — портативная локальная система памяти, доступ к которой осуществляется через интерфейс командной строки (CLI). Она строит иерархическое дерево знаний и извлекает важные факты до того, как сжатие с потерями успеет удалить их из контекста.
  • Supermemory предлагает семантическую долговременную память с API графов: система поглощает полные логи сессий после завершения разговора для построения своего графа знаний, периодически очищает извлеченные факты во избежание замусоривания текущими репликами и может изолировать память в отдельные контейнеры для каждого профиля агента.

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

Самообучающийся цикл (The Self-Improving Loop)

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

Система триггеров (The Trigger System)

Hermes не анализирует каждое сообщение в режиме реального времени, так как это привело бы к пустой трате токенов. Вместо этого он полагается на два счетчика, которые запускают этап осмысления (pass), как только они пересекают определенный порог.

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

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

Фоновый агент проверки (The Background Review Agent)

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

  • На декларативном уровне: если он замечает новые предпочтения пользователя или детали окружения (например, предпочтение Supabase или проект, привязанный к Python 3.12), он обновляет файл MEMORY.md или USER.md в зависимости от того, к какому файлу относится данный факт.
  • На процедурном уровне: если он обнаруживает, что агент только что решил нетривиальную задачу или разработал сложный процесс, он может создать новый навык, отредактировать существующий, применить целевой патч или полностью удалить навык. Любой созданный им навык явно помечается как «сгенерированный агентом» (agent-generated), поэтому его происхождение всегда можно отследить.

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

Куратор (The Curator)

Если предоставить этот процесс самому себе, он может со временем создать сотни навыков, часть из которых будет избыточной, а часть — устаревшей.

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

Работа куратора проходит в два этапа:

Первый этап носит чисто механический характер и вообще не включает вызовы LLM: он проверяет метрики использования, помечает любой созданный агентом навык, который не использовался более 30 дней, как устаревший (deprecated), и перемещает всё, что не использовалось более 90 дней, в архивную папку. Важные навыки можно явно закрепить (pin), чтобы защитить их от этого процесса.

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

Для каждого навыка куратор принимает одно из решений:

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

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

Эффективное использование Hermes

Такие облачные агенты действительно ценны для любого процесса, который можно запускать в режиме 24/7 (заметным исключением здесь является написание кода), — при условии, что вы действительно тщательно оцифровали этот процесс и создали вокруг него надежный навык, включая тесты производительности (evaluations).

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

  • Начните с подробной записи того, как вы сами проходите этот процесс от абсолютного начала до самого конца, в идеале используя инструмент диктовки, чтобы зафиксировать всё максимально точно. Этот шаг сработает только в том случае, если вы действительно понимаете процесс или должным образом его изучили.
  • Возьмите эту запись или эти заметки и передайте их агенту кодинга, используя инструмент создания навыков, чтобы получить первый черновик. Для чего-то сложного он пока будет недостаточно хорош, чтобы сразу отдавать его в работу.
  • Встройте эвалы (evals) — эталонные решения, представляющие собой правильный результат. Именно они позволяют вам реально измерить, насколько хорошо работает навык, а не гадать на кофейной гуще.
  • Запустите навык в тестовой среде и доработайте как сами эвалы, так и содержание навыка на основе того, что вы наблюдаете, выполняя большую часть этого редактирования вручную, а не делегируя его.
  • Только после того, как навык начнет вести себя стабильно и детерминировано, его следует передавать постоянно работающему агенту. Если процесс зависит от какого-то внешнего сервиса, перед созданием решения с нуля стоит проверить, не покрывает ли его уже существующий MCP-сервер (Model Context Protocol) или интерфейс командной строки (CLI).

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

Три принципа остаются верными для любых сценариев использования:

  1. не отдавайте написание кода на аутсорс бесконтрольному облачному агенту, работающему 24/7;
  2. сохраняйте человека в контуре управления (human-in-the-loop) для проверки того, что агент производит на самом деле;
  3. относитесь к совершенствованию навыков как к непрерывному процессу, а не как к задаче, которую вы выполнили один раз и забыли.

Если этот материал был полезен — добавьте его в закладки. Вы захотите к нему вернуться.

Чтобы читать больше подобных разборов, подписывайтесь на @ScottyBeamIO

Никакой воды, только то, что действительно работает.

✍️ Перевод: https://x.com/ScottyBeamIO/status/2066885278451519590?s=20
🦧 Подпишись на канал: https://t.me/cryptomokakke
📚 Больше статей: https://t.me/smart_sorting