Performance For Power Users

Как Hermes Agent v0.14.0 срезал 19 секунд с холодного старта и ускорил browser-операции в 180×

Hermes Agent

Hermes Agent

@hermesagents

May 17, 2026

10 мин чтения

v0.14.0 выкатил стопку перф-работы, которая, сложенная вместе, делает Hermes Agent ощущением другой программы. Три заголовка из release notes:

  • ~19 секунд срезаны с холодного старта. Размазаны по графу импортов, doctor-проверкам, lookup'у каталога моделей, welcome-баннеру.
  • browser_console быстрее в 180×. Одно постоянное CDP-соединение вместо открытия новой DevTools-сессии на каждый вызов.
  • Кросс-сессионный 1-часовой Claude prompt-кеш. /new не теряет тёплый prefix-кеш.

Ни один из этих пунктов не «переписали с нуля». Каждый — это серия маленьких, локализуемых PR, бьющих по конкретным hot path'ам. Этот пост — разбор PR-за-PR: что было медленным, что изменилось, и какие уроки годятся любому, кто пишет агента.

Точка отсчёта

Если ты запускал hermes в начале мая 2026, путь холодного старта выглядел так:

  1. 1.Стартует Python-интерпретатор (~100 мс)
  2. 2.import hermes запускает остаток графа импортов (~5–10 с)
  3. 3.Plugin-discovery hermes сканирует установленные плагины (~2–3 с)
  4. 4.hermes doctor последовательно гоняет API-connectivity-пробы (~3–5 с)
  5. 5.Загружается skills-индекс, часто заново тянется по сети (~2–4 с)
  6. 6.Рендерится welcome-баннер (~1 с)
  7. 7.Появляется prompt

Итого 15–25 секунд до того, как ты можешь начать печатать. Достаточно, чтобы разрушить flow. Перф-волна v0.14.0 атакует каждый из этих шагов.

Волна по холодному старту (10+ PR)

Кеш скилов + ленивые импорты адаптеров (#22138)

Самая большая одиночная победа. Два параллельных изменения:

  1. 1.Skills-индекс закешан на диск. Раньше каждый вызов hermes перечитывал директорию скилов и крутил лёгкую индексацию. Теперь индекс лежит в кеш-файле; пересобирается, только когда меняется директория (проверка по mtime).
  2. 2.Тяжёлые SDK адаптеров стали ленивыми. Раньше: импорт hermes тащил импорт SDK Feishu, SDK WhatsApp, всех voice/TTS-провайдеров, всех image-gen-SDK. Теперь: каждый откладывается до первого использования. Если ты никогда не пользуешься Feishu, Feishu-SDK никогда не грузится.

Оба изменения — в #22138, отрезали ~5–8 секунд. Паттерн lazy-import — невоспетый герой: он механически разбросан по кодовой базе, но не выглядит как один эффектный PR.

Пропустить агрессивный plugin-discovery на известных подкомандах (#22120)

Когда ты запускаешь hermes config set X Y, plugin-discovery не нужен. То же для hermes tools, hermes model, hermes doctor. Диспетчер теперь коротит plugin-discovery, когда команда — известный built-in. Сэкономлено ~2 секунды на большинстве CLI-вызовов.

Cache-first lookup на models.dev (#22808)

Hermes стучится в models.dev за канон-каталогом моделей. До v0.14.0 каждый старт hermes делал HTTP-вызов. Теперь: сначала читаем из disk-кеша; refetch только когда stale (>24 ч). Cache hit — ~5 мс вместо ~200–500 мс (сетевой round-trip).

Параллельные API-пробы в hermes doctor (#22766)

hermes doctor проверял «дотягиваюсь ли я до Nous Portal, OpenRouter, Anthropic, OpenAI» последовательно. Теперь: asyncio.gather их в кучу, и сдохший IMDS-проб (instance metadata service), который таймаутил на не-cloud-машинах, выкинут. ~3–5 секунд срезано с doctor'а в типичном случае.

chat -q пропускает welcome-баннер (#22904)

Если ты в single-query режиме (hermes chat -q "what's the time"), welcome-баннер — шум. v0.14.0 не рендерит его. ~1 секунда возвращена для scripted / автоматизационных сценариев.

Отложенные импорты по всему графу

Длинный хвост PR, каждый откладывает один тяжеловесный импорт:

  • google-cloud в адаптере google_chat — грузится только при первом использовании google chat (#22681)
  • QQAdapter, YuanbaoAdapter — отложены на уровне модуля через PEP 562 (#22790)
  • httpx в адаптере teams — только при первом webhook-вызове (#22831)
  • fal_client — только при первой генерации изображения (#22859)

Каждый PR маленький. Вместе — ещё 2–4 секунды.

Кеширование Nous-auth и .env-загрузок (#25341)

Экран All-Platforms в hermes tools раньше делал per-platform auth-пробы синхронно. Когда кеш приземлился, это упало с 14 секунд до меньше 1,5. Экран работает так же; просто не жжёт 14 секунд сетевого времени на каждый вызов.

Чистый итог

Сложи победы — получишь те самые 19 секунд из заголовка. По отдельности ни одна не драматическая; вместе программа ощущается отзывчивой.

История 180× browser_console (#23226)

Browser-tool в Hermes использует Chrome DevTools Protocol (CDP) для управления headless-Chrome'ом. До v0.14.0 каждое вычисление browser_console делало вот это:

  1. 1.Открыть новый CDP-WebSocket к Chrome
  2. 2.Дождаться handshake'а (~1–2 с)
  3. 3.Отправить JavaScript на вычисление
  4. 4.Прочитать результат
  5. 5.Закрыть WebSocket

Для цепочки вычислений — скажем, агент инспектирует страницу шаг за шагом — это было ~1,5 с на вычисление. Типичный workflow «посмотри на эту страницу и расскажи мне о ней» был мучительно медленным.

Изменение v0.14.0: один постоянный WebSocket на supervisor'а, общий для всех вызовов browser-tool'а. CDP-handshake происходит один раз за сессию; последующие вычисления полностью пропускают шаги 1–2 и просто шлют payload.

Результат: latency per-call упала с ~1,5 с до ~8 мс. Это ~180×.

Урок общий. Везде, где твой агент делает N tool-вызовов, и каждый открывает новое соединение: для нагрузок в темпе чата connection pooling бьёт параллелизм. Всё время уходит на установку соединения, а не на саму работу.

Кросс-сессионный 1-часовой Claude prompt-кеш (#23828, #25434, #24778)

Prompt-кеш Claude (feature Anthropic API) позволяет пометить кусок контекста как cacheable. Последующие запросы внутри TTL — исторически 5 минут — переиспользуют закешированный prefix с заметно меньшей стоимостью и latency.

До v0.14.0 Hermes использовал это внутри сессии: system-prompt + активные скилы кешировались, попадания в той же беседе были быстрее и дешевле. Но когда ты запускал /new, кеш инвалидировался, и следующая беседа начиналась холодной.

Работа v0.14.0, размазанная по трём PR, расширяет TTL кеша до 1 часа и заставляет ключ кеша переживать /new. Первый ответ в свежей сессии получает выгоду от тёплого кеша из прошлой. Для людей, у которых день — это много коротких бесед, это значимая победа по стоимости и latency.

Кеш также покрывает ветку фонового memory-review (#25434) — периодический процесс, который пересматривает и консолидирует твой memory-файл, теперь бьёт по тому же prompt-кешу, а не платит полную цену на каждой итерации.

Сопутствующий перф-фикс в этой области: ключ prompt-кеша использует timestamp, обрезанный до даты, чтобы кеши не разваливались на смене часового пояса. Шумное логирование gateway-DB-round-trip'ов завершает картину по наблюдаемости.

Какие инструменты вывели эти победы наружу

Как авторы нашли именно эти hot path'ы? Два ответа:

  • Профилирование холодного старта на реальной установке. Они гоняли hermes под таймингом и отслеживали, какие импорты дольше всех. Потом шли на них по одному.
  • Жалобы пользователей, что «Hermes тормозит». То, что All-Platforms-экран hermes tools тормозит, было конкретным bug-report'ом; стоило этому всплыть — фикс был прямолинейным.

Никакой магии. Победы находятся через python -X importtime, cProfile и слушание тех, кто жалуется.

Уроки для любого автора агента

Если ты пишешь своего агента, перф-волна v0.14.0 обобщается до нескольких правил:

  1. 1.Не импортируй то, чем не пользуешься. Lazy-import каждого адаптера и SDK провайдера. Граф импортов — это твой холодный старт.
  2. 2.Кешируй всё, что стабильно. Skills-индекс, каталог моделей, auth-токены. Refetch только когда заведомо stale.
  3. 3.Пуль соединения. Если ты ходишь к API или к CDP-серверу больше одного раза за сессию, держи соединение.
  4. 4.Гоняй независимые пробы параллельно. Doctor-проверки, health-чеки, всё, где порядок не важен.
  5. 5.Не рендери UI, который не нужен. Welcome-баннеры, декоративный вывод — пропускай в не-интерактивных путях.

Ни одно из них не новость. Это стандартный перф-плейбук для любого CLI. Интересно в v0.14.0 то, что весь плейбук был применён в одном release-окне, и результат был ощутим в момент, когда пользователи обновились.

Если твой Hermes ощущался хрупким в начале мая, v0.14.0 — это релиз, в котором холодный путь исчез.

Дальше

Поделиться в:
star Star on GitHub

Подписаться на обновления

Новости сообщества о релизах Hermes Agent, новых навыках и интеграциях. Без спама, отписаться можно в любой момент.