Справочник по OpenAI Agents SDK: примитивы (Agents, Handoffs, Guardrails, Tracing), agent loop, sandbox, subagents, MCP и когда выбирать SDK вместо Responses API loop.
Hermes Agent — открытый ИИ-агент от Nous Research, который учится у вас в процессе работы: помнит контекст между сессиями, пишет себе многоразовые навыки и подчищает их в фоне. За два месяца проект собрал более 90 000 звёзд на GitHub.

Что это такое
Hermes Agent решает проблему, общую для всех ИИ-агентов: они забывают всё, как только заканчивается сессия. Ваши предпочтения по коду, конвенции проекта, фикс, который агент разбирал вчера 10 минут — всё стирается. В следующий раз вы начинаете с нуля.
Hermes устроен иначе. В нём встроена петля обучения, которая:
- помнит между сессиями;
- сама пишет себе переиспользуемые навыки;
- подчищает их в фоне;
- валидирует их офлайн через эволюционный движок GEPA.
В одном фреймворке собраны три обычно разделённые возможности: обучение навыкам во время работы, многоуровневая постоянная память и опциональный пайплайн для тонкой настройки весов модели. Ни один другой open-source агент не сочетает все три сразу.

Сравнение с OpenClaw
Ближайший аналог в открытой экосистеме — OpenClaw. Оба персистентные, дружат с мессенджерами, но делают противоположные архитектурные выборы.
Точная формулировка из блога Kilo: «Hermes packages a gateway around a learning agent. OpenClaw packages an agent around a messaging gateway» — Hermes упаковывает шлюз вокруг обучающегося агента, OpenClaw упаковывает агента вокруг шлюза для мессенджеров.

Архитектура: один класс на всё
Всё проходит через единственный класс AIAgent в скрипте run_agent.py. CLI, мессенджер-шлюз, батч-раннер, IDE-интеграция — это точки входа в одно и то же агентное ядро.

Основной цикл ReAct-стиля, синхронный: собираем системный промпт, проверяем нужна ли компрессия, делаем прерываемый API-вызов, выполняем tool calls, повторяем.
Несколько деталей, которые важны дальше:
- Шесть мест для запуска команд. Локальный терминал, Docker, SSH, Modal, Daytona или Singularity. Код один, меняется только конфиг. Можно перенести выполнение с ноутбука на облачный GPU-сервер без правок кода.
- Почти любая модель. Слой трансляции маршрутизирует любого провайдера через один из трёх API-форматов. Переключение Claude → GPT → Gemini → локальный Ollama одной командой, ничего не ломается.
- Жёсткий лимит 90 ходов на задачу. Без него агент, застрявший в цикле, тихо сжёг бы ваши кредиты. Субагенты делят тот же бюджет.
Идентичность: SOUL.md
Перед памятью и навыками идёт слой идентичности. Память — это что агент знает. Навыки — как он делает. Но кто он, когда приходит работать?
Hermes решает это одним файлом SOUL.md.
Файл лежит в ~/.hermes/SOUL.md и занимает слот №1 в системном промпте, до всего остального. Описывает личность агента, тон, стиль коммуникации и жёсткие ограничения.
# SOUL.md
You are a pragmatic senior engineer with strong taste.
You optimize for truth, clarity, and usefulness
over politeness theater.SOUL.md пишется руками и остаётся статичным. Написали один раз, иногда подправляете — он сохраняет консистентность между проектами и сессиями. Если файла нет, Hermes использует встроенный дефолт.
Важно для понимания самообучающейся истории: всё, что происходит дальше (память, которую агент пишет, навыки, которые он создаёт, способ консолидации знаний) происходит через призму этой идентичности.
Система памяти: три уровня
У Hermes не одна «память». Три уровня, у каждого своя задача.

Уровень 1: два маленьких Markdown-файла
- MEMORY.md (макс. 2 200 символов) — заметки агента о вашей среде, конвенциях проекта, особенностях инструментов, извлечённых уроках.
- USER.md (макс. 1 375 символов) — ваш профиль: имя, предпочтения по коммуникации, уровень, чего избегать.
Оба внедряются в системный промпт как замороженный снимок в начале сессии. Если агент пишет новую запись в середине сессии, она сразу сохраняется на диск, но появится в системном промпте только в следующей сессии.
Когда память заполняется (≈80% ёмкости, отображается процентом в шапке системного промпта), агент обязан консолидировать: слить похожие записи в более плотные, чтобы выживала только полезная информация.
Уровень 2: полнотекстовый поиск по сессиям
Каждый разговор (CLI и мессенджеры) сохраняется в SQLite с полнотекстовым поиском. Агент может искать по неделям прошлых разговоров.
Компромисс ясен: Уровень 1 всегда в контексте, но крошечный. Уровень 2 — без ограничений по объёму, но требует активного поиска плюс LLM-резюмирования. Критичные факты живут в памяти. Всё остальное — поиск по требованию.
Уровень 3: внешние провайдеры памяти
Hermes поставляется с восемью подключаемыми провайдерами, которые работают параллельно встроенной памяти (не заменяют её). Активным может быть только один.
Когда внешний провайдер активен, Hermes автоматически префетчит релевантные воспоминания перед каждым ходом, синхронизирует разговор после каждого ответа и извлекает воспоминания на завершении сессии.

Самоэволюционирующие навыки
Память отвечает за факты. Навыки — за процедуры.
Навыки — это Markdown-файлы с YAML-фронтматтером, процедурная память агента: не что он знает, а как делает.
Анатомия навыка:
---
name: k8s-pod-debug
description: >
Activate for crashing pods, CrashLoopBackOff,
"why is my pod restarting", container failures.
version: 1.2.0
author: agent
platforms: [linux, macos]
---
## Procedure
1. Get pod status → check events → pull logs
2. Look for OOMKilled, ImagePullBackOff, config errors
## Pitfalls
- Forgetting --previous flag on restarted containers
## Verification
- Pod stays Running with 0 restarts for 5+ minutesПрогрессивное раскрытие
Для экономии токенов навыки раскрываются постепенно:

- Уровень 0: агент видит только имена и описания (≈3k токенов на весь каталог).
- Уровень 1: загружает полное содержимое навыка, когда он реально нужен.
- Уровень 2: при необходимости открывает конкретные reference-файлы внутри навыка.
Петля самообучения
Это ядро отличия. Агент создаёт навыки сам через инструмент skill_manage. Создание триггерится, когда:
- агент завершил сложную задачу (5+ tool-вызовов);
- наткнулся на ошибку или тупик и нашёл рабочий путь;
- пользователь поправил его подход;
- обнаружил нетривиальный workflow.
Цикл: агент встретил проблему → решил методом проб и ошибок → сохранил успешный подход как SKILL.md → в следующий раз при похожей задаче загрузил навык и пошёл по проверенной процедуре, а не переоткрывал её заново.
Инструмент поддерживает шесть действий: create, patch (точечная правка, предпочтительная по экономии токенов), edit (полная переписка), delete, write_file, remove_file.

Curator: фоновая чистка навыков
Без обслуживания агентские навыки разрастаются. Десятки узких, перекрывающихся плейбуков жгут токены и засоряют каталог.
Curator — фоновая система обслуживания. Работает по проверке неактивности (не cron-демон): если с прошлого запуска прошло 7 дней и агент простаивал 2+ часа, в фоне поднимается форк агента с собственным prompt-кэшем, не трогая активный разговор.
Две фазы работы:
- Автоматические переходы (детерминированные, без LLM): навыки, не использовавшиеся 30 дней, становятся stale. Не использовавшиеся 90 дней — архивируются.
- LLM-ревью (до 8 итераций): форк агента проходит по всем агент-созданным навыкам и решает по каждому: keep, patch, consolidate, archive.
Два важных ограничения:
- Curator никогда не трогает встроенные навыки или установленные из хаба. Только агент-созданные.
- Никогда не удаляет автоматически. Худший исход — архивация в
~/.hermes/skills/.archive/, восстанавливается одной командой.
Перед каждым проходом Curator делает tar.gz-снимок всей папки skills. Откат — одна команда, сам откат тоже обратим.
Критичные навыки можно закрепить через hermes curator pin <skill> — защищает от архивации и удаления. Patch и edit при этом проходят, чтобы агент мог улучшать закреплённый навык.

GEPA: офлайн-эволюция навыков
У встроенной петли обучения (создание навыков плюс Curator) есть известная слабость: агент склонен к самовосхвалению. Он почти всегда думает, что справился хорошо, даже когда это не так. Сообщество это подтверждает. Та же система, что генерирует навыки автоматически, может перезаписать вашу ручную кастомизацию более слабой версией.
Здесь и появляется GEPA.
GEPA (Genetic-Pareto Prompt Evolution) не встроен в рантайм Hermes. Живёт в отдельном репозитории NousResearch/hermes-agent-self-evolution и работает как офлайн-пайплайн оптимизации. Опубликован как ICLR 2026 Oral paper, лицензия MIT.
Идея: вместо вопроса «справился ли ты?» GEPA читает трассы выполнения, чтобы понять почему всё пошло не так, и предлагает точечные улучшения через эволюционный поиск.
Пайплайн:
- Читаем текущий навык из репозитория Hermes.
- Генерируем датасет для оценки: синтетические тест-кейсы через Claude Opus, реальная история сессий из SQLite или подобранные вручную «золотые» наборы.
- Запускаем GEPA-оптимизатор: чтение трасс → понимание точек сбоя → генерация вариантов-кандидатов.
- Оцениваем кандидатов через LLM-as-judge с рубриками, без бинарного pass/fail.
- Применяем гейты-ограничения: полный набор тестов должен пройти на 100%, навык остаётся под 15 KB, совместимость с кэшированием сохранена, семантическое назначение не дрейфует.
- Лучший вариант уходит PR-ом против репозитория Hermes. Никогда не прямым коммитом.
GPU не нужен. Всё через API-вызовы. Стоимость — примерно 2–10 долларов за прогон оптимизации (по курсу на момент публикации — около 200–1 000 рублей).

Этот шаг можно пропустить на старте, но он реально помогает, когда упёрлись в стену и не готовы тратить время и деньги на полноценный файнтюнинг (RL/GRPO).

Установка и быстрый старт
Поддерживаемые ОС: Linux, macOS или WSL2. Python 3.11+ ставится вместе с инсталлятором. 8 ГБ оперативной памяти достаточно для работы через API.
Установка одной строкой:
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
source ~/.bashrc # или ~/.zshrcЗапуск мастера настройки (провайдер, API-ключ, модель, инструменты):
hermes setupЗапуск чата в терминале:
hermesПодключение Telegram
Чтобы общаться с агентом с телефона, подключите Telegram-бота:
- Получите токен бота у @BotFather командой
/newbot. - Узнайте свой Telegram user ID через @userinfobot.
- Запустите
hermes gateway setupи вставьте токен.
Файловая структура ~/.hermes/
После установки в домашней директории появляется папка. Полезно понимать раскладку — всё, что вы делаете с Hermes, касается одного из этих путей.
~/.hermes/
├── config.yaml # Основная конфигурация
├── .env # API-ключи и секреты
├── auth.json # OAuth-учётные данные
├── SOUL.md # Идентичность агента (слот №1 системного промпта)
│
├── memories/
│ ├── MEMORY.md # Постоянные факты агента
│ └── USER.md # Модель пользователя
│
├── skills/ # Все навыки (встроенные, из хаба, агент-созданные)
│ ├── mlops/
│ │ ├── axolotl/
│ │ │ ├── SKILL.md
│ │ │ ├── references/
│ │ │ └── scripts/
│ │ └── vllm/
│ ├── devops/
│ └── .hub/ # Состояние Skills Hub
│
├── sessions/ # Метаданные сессий по платформам
├── state.db # SQLite-хранилище сессий с FTS5
├── cron/
│ ├── jobs.json # Расписание задач
│ └── output/ # Выходные данные cron-прогонов
│
├── plugins/ # Пользовательские плагины
├── hooks/ # Lifecycle hooks
├── skins/ # Темы CLI
└── logs/ # agent.log, gateway.log, errors.logНесколько файлов заслуживают отдельного внимания:
config.yaml— источник правды для всего, что не секреты. Модель, терминал-бэкенд, включённые инструменты, MCP-серверы. Редактирование черезhermes config editили поштучноhermes config set <key> <value>..env— секреты: API-ключи, токены ботов, пароли. Hermes автоматически роутит секретные значения сюда.SOUL.md— слот №1 в системном промпте.skills/— здесь живёт вся петля обучения.state.db— SQLite с FTS5 для поиска по сессиям. WAL-режим. Благодаря ему работает запрос «что мы обсуждали три недели назад?».
Каталог навыков (Skills Hub)
Hermes ведёт официальный Skills Hub с 687 навыками в 18 категориях:
- 87 встроенных — едут вместе с агентом.
- 79 опциональных — включаются по требованию.
- 16 от Anthropic — frontend-design, pdf, pptx, docx, mcp-builder и другие.
- 505 от LobeHub — более широкая community-подборка.

Можно добавить любой GitHub-репозиторий как кастомный tap:
hermes skills tap add yourname/your-skills-repo
hermes skills install yourname/your-skills-repo/<skill-name>Так удобно делиться навыками в команде или поддерживать свою приватную подборку.
Несколько агентов одновременно: профили
Один агент — нормально. Несколько специализированных — место, где Hermes становится интересным.
Hermes из коробки умеет в профили. Каждый профиль — полностью изолированный экземпляр Hermes со своим конфигом, памятью, навыками, сессиями и SOUL.md. По умолчанию ничего не делят.
Поднимем троих: дизайнера, программиста и ресёрчера.
Создание команды
hermes profile create designer --clone
hermes profile create programmer --clone
hermes profile create researcher --clone
hermes profile listФлаг --clone копирует конфиг и .env дефолтного профиля как стартовую точку.
Свой Telegram-бот на каждого
Каждому профилю нужен свой бот у BotFather. Telegram разрешает только одно подключение на токен, расшаривание ломает всё.
Запустите /newbot у BotFather три раза, сохраните три токена. Затем для каждого профиля:
hermes -p designer gateway setup
hermes -p programmer gateway setup
hermes -p researcher gateway setupЛичность через SOUL.md
Тут агенты становятся действительно разными. Правим SOUL.md каждого профиля.
Дизайнер в ~/.hermes/profiles/designer/SOUL.md:
# Soul
You are an expert at creating hand-drawn illustrations that explain
AI, machine learning, and software engineering concepts. Think
whiteboard sketches, not polished marketing art.
Every illustration should make a technical idea click. You lead with
the concept, then choose the metaphor, then commit to the sketch.
You prefer simple line work and clear labels over visual flourish.
Be opinionated about what to draw and what to leave out. Say when an
illustration would hurt more than help.Примеры работы:

Программист в ~/.hermes/profiles/programmer/SOUL.md:
# Soul
You are my staff engineer. Terse, direct, pragmatic.
You read code before you write code. You write the smallest change
that solves the problem. You prefer standard library over dependencies,
boring tech over shiny tech, and explicit over clever.
Always check: does this already exist in the codebase? Are there
tests? What breaks if this fails? Run the tests before saying "done."Ресёрчер в ~/.hermes/profiles/researcher/SOUL.md:
# Soul
You are my deep researcher for the AI and machine learning space.
Your main job is a daily Telegram digest of what's new and what
matters.
Cover four streams: trending GitHub repos, big tech and lab
announcements, fresh research papers, and the social pulse on X,
Reddit, and Hacker News. Lead with what changed since yesterday.
Cite every claim with a URL. Flag when signal is thin.
Use delegate_task aggressively to parallelize across streams. Never
state a contested claim as settled. Never fabricate a citation.Кастомизация программиста: маршрутизация через Claude Code
Программист становится интереснее, если делегирует выполнение Claude Code CLI вместо того, чтобы писать код сам. Hermes оркестрирует. Claude Code делает правки файлов, гоняет команды, ведёт git. Hermes читает результат и решает следующий шаг.
Автор гайда так запускает связку поверх своей подписки Claude Max. Отдельный API-ключ не нужен — Claude Code использует учётные данные Max автоматически.
Стартуйте сессию и отправьте один активирующий промпт:
Программист сам поставит навык autonomous-ai-agents/claude-code, проверит что claude есть в PATH, и начнёт использовать его для выполнения кода. Со следующего сообщения всё связанное с кодом (чтение файлов, написание кода, прогон тестов, коммит, push) уходит через Claude Code.
Два момента:
- Убедитесь, что
claudeесть в PATH до активации.which claudeдолжен вернуть реальный путь к бинарнику. - У Claude Code два режима: print (one-shot, быстрый, без TUI) и интерактивный (полная tmux-сессия). Программист сам выберет под задачу.
Кастомизация дизайнера: обучение визуальному стилю
Дизайнер становится по-настоящему полезным, когда генерирует картинки в вашем стиле, а не в безликом ИИ-выводе. Паттерн: показываете референсные дизайны, агент изучает их, просите его создать навык для генерации новых картинок в том же стиле.
Это самообучающаяся петля, использованная как механизм настройки. Вместо ручного написания навыка показываете хорошие примеры и просите агента закодировать паттерн.
Откройте сессию дизайнера и приложите референсные картинки (drag-and-drop в CLI или вложением в Telegram). Затем отправьте промпт:
Carefully study these reference illustrations. Note the color palette,
line weight, level of detail, composition, and overall aesthetic.
I want you to create a new skill called "my-design-style" that captures
this visual style. The skill should:
1. Document the style fingerprint in plain language (palette, line
weights, composition rules, recurring motifs)
2. Include a Python script that takes a text description of a new
illustration and generates the image using the Nano Banana model
(google/gemini-2.5-flash-image) via the OpenRouter API in this style
3. Read OPENROUTER_API_KEY from the environment
Use skill_manage to create it. Test the generated script on a sample
prompt before saying it's done.Дизайнер изучит референсы, напишет SKILL.md, сгенерирует Python-скрипт, сохранит его в ~/.hermes/profiles/designer/skills/my-design-style/ и проверит, что скрипт запускается.
Если на hermes setup вы выбрали OpenRouter как провайдера, ключ уже в .env профиля дизайнера благодаря --clone. Если нет — добавьте:
hermes -p designer config set OPENROUTER_API_KEY <your-key>С этого момента запрос на новую иллюстрацию запускает навык. Агент пишет промпт с учётом ваших стилевых отпечатков, вызывает Nano Banana через OpenRouter и сохраняет результат.
Тот же паттерн работает для любого стилевого вывода: показываете референсы, просите агента собрать навык, который воспроизводит паттерн. Интро для рассылки, X-треды, ревью-комментарии — всё, где важна консистентность.
Планировщик задач: cron на естественном языке
В SOUL.md ресёрчера сказано, что он отвечает за ежедневный Telegram-дайджест. Значит, нужна задача по своему расписанию, без необходимости вспоминать. Для этого есть Hermes cron.
Hermes поставляется со встроенным планировщиком. Gateway-демон тикает раз в 60 секунд, запускает готовые задачи в изолированных сессиях агента и доставляет вывод в указанный мессенджер. Задачи переживают рестарты. Лежат в ~/.hermes/cron/jobs.json, выходные данные — в ~/.hermes/cron/output/.

Интересный момент: cron-выражения писать не нужно. Описываете на английском (или русском), Hermes сам конвертирует.
Подключение ежедневного дайджеста
Откройте сессию ресёрчера и отправьте промпт:
Every weekday at 8am India time, prepare a deep digest of what's new
in the AI and machine learning space over the last 24 hours. Cover
four streams in this order:
1. Trending GitHub repos (especially new AI/ML tooling)
2. Big tech and lab announcements (Anthropic, OpenAI, Google, Meta,
xAI, Nous, etc.)
3. Fresh research papers worth reading
4. Social pulse from X, Reddit, and Hacker News
Lead with what changed since yesterday. Cite every claim with a URL.
Keep it under 800 words. Deliver to Telegram.
Set this up as a recurring cron job.Ресёрчер создаст задачу через свой инструмент cronjob, доставка по умолчанию пойдёт в текущий чат (Telegram), планировщик заберёт остальное. Проверить:
hermes -p researcher cron listУвидите задачу и время следующего запуска. На следующее утро в 8:00 в Telegram прилетит дайджест. Дополнительных действий не нужно.
Полезные паттерны cron
Синтаксис гибкий:
- Одноразовые задержки.
/cron add 30m "Remind me to check the build"выполнится один раз через 30 минут. - Повторяющиеся интервалы.
/cron add "every 2h" "Check server status"каждые два часа. - Стандартные cron-выражения.
/cron add "0 9 * * 1-5" "..."для точного контроля; в примере — будни в 9 утра. - Прикрепление навыка.
/cron add "every 1h" "Summarize new feed items" --skill blogwatcherподгружает навык перед запуском промпта.
Задачи можно сцеплять: вывод одного cron становится входом другого через флаг context_from. Удобно для многошаговых автоматизаций, где этап ресёрча кормит этап написания.
Тарифы и лимиты
- Сам Hermes Agent — open-source, MIT, бесплатный. Репозиторий принадлежит NousResearch.
- API-вызовы моделей оплачиваются у выбранного провайдера (Anthropic, OpenAI, Google, OpenRouter; локальные модели через Ollama — бесплатно).
- GEPA-оптимизация — около 2–10 долларов за прогон (примерно 200–1 000 рублей по текущему курсу).
- Аппаратные требования — 8 ГБ оперативной памяти для работы через API. GPU не нужен ни для рантайма, ни для GEPA.
- Жёсткий лимит — 90 ходов на задачу (защита от закольцованных вызовов).
Ссылки
- Репозиторий: github.com/NousResearch/hermes-agent
- Self-evolution pipeline (GEPA): github.com/NousResearch/hermes-agent-self-evolution
- Nous Research: nousresearch.com
- Источник материала: гайд @akshay_pachaar в X/Twitter
По теме
- Статья: OpenClaw не для всех — и именно поэтому он работает
- Блог: Higgsfield Supercomputer — ИИ-агент для контент-продакшена на базе Hermes
- База знаний: Codex от OpenAI — новая стандартная среда для работы с ИИ-агентами
Hermes даёт каркас для построения собственного контура самообучающихся агентов. Самое интересное начинается, когда такой контур встраивается в реальные процессы команды или проекта.
Если захотите обсудить, как это применить у себя или в команде — пишите в Telegram @pimenov