2 сентября 2026, 22:30
Hermes Agent уже давно живёт в отдельной VM внутри Proxmox, отвечает в Telegram и ходит к модели через локальный FreeDeepseekAPI. Но просто подключить LLM к инфраструктуре недостаточно. Для короткого вопроса такой агент удобен, а на длинной задаче быстро проявляются ограничения: план теряется в истории, вывод команд забивает контекст, а поиск по интернету зависит от возможностей конкретной модели.
Сегодня я добавил Hermes четыре расширения:
- Planning with Files — постоянный план и журнал работы в Markdown;
- RTK — сокращение многословного вывода команд;
- Agent Reach — доступ к веб-страницам, GitHub, YouTube и RSS;
- Skill Retrieval — выбор релевантных навыков вместо загрузки всего каталога.
Последний пункт пришлось отключить после тестирования. И это, пожалуй, самая полезная часть эксперимента: расширение агента считается внедрённым не после установки, а только после проверки реального ответа от модели.
Открыть интерактивную архитектуру Hermes Agent
Интерактивная версия позволяет отдельно проследить путь запроса, работу длинной задачи, исследование внешних источников и отключённый Skill Retrieval. Интерфейс просмотрщика Archify пока англоязычный, но содержание схемы подписано по-русски.
Зачем это понадобилось
На Hermes уже установлено больше сотни навыков. Если каждый раз помещать их полные описания в системный prompt, модель получает много служебного текста ещё до вопроса пользователя.
Одновременно агент выполняет команды вроде git diff, читает логи и исследует репозитории. Их необработанный вывод тоже быстро расходует контекст.
Получалась такая схема:
сообщение в Telegram
|
v
огромный системный prompt со skills
|
v
многословный вывод shell-команд
|
v
модели остаётся меньше полезного контекста
Цель обновления — не добавить ещё четыре пункта в список плагинов, а сделать длинные инфраструктурные задачи устойчивее.
Planning with Files
Первым был установлен Planning with Files. Это реализация подхода, при котором план, найденные факты и прогресс существуют не только внутри переписки, а сохраняются в Markdown-файлах.
Для Hermes проект предоставляет отдельный skill, plugin, три инструмента планирования и hooks жизненного цикла.
Теперь большая задача может выглядеть так:
/skill plan
Проверь весь homelab:
- состояние узлов Proxmox;
- свободное место;
- ошибки сервисов;
- доступные обновления.
Сначала составь план. Ничего не изменяй без подтверждения.
После этого агент может продолжать работу в нескольких сообщениях, сверяясь с файлами плана, а не пытаясь восстановить всё по истории Telegram.
Есть небольшой нюанс: команда /plan уже занята ядром Hermes. Поэтому установленный skill вызывается через /skill plan.
Для homelab такой режим особенно полезен при обновлениях, миграциях и расследовании аварий. Если gateway перезапустился или диалог стал слишком длинным, состояние задачи не должно исчезать вместе с контекстом модели.
RTK: меньше вывода, больше полезного контекста
Второе расширение — RTK, небольшой CLI-proxy на Rust. Он становится между агентом и консольной командой, фильтруя повторяющийся и малополезный вывод.
После подключения к Hermes команда:
git status
автоматически переписывается в:
rtk git status
То же относится к части команд git, поиску по файлам и запуску тестов. Самому пользователю писать rtk не нужно: преобразование выполняет plugin Hermes.
Авторы RTK заявляют сокращение вывода распространённых команд на 60–90%. Это не означает, что весь запрос к модели станет дешевле на 90%: системные инструкции, история и ответ модели никуда не исчезают. Но shell output — именно та часть, которую RTK действительно может уменьшить.
Для инфраструктуры я настроил исключения. RTK не переписывает:
ssh, scp, rsync
systemctl, journalctl
ip, ss, ping, dig, wg
qm, pct, pvesh
apt, curl, playwright
Причина простая: в диагностике сети, systemd и Proxmox опасно потерять строку, которую фильтр посчитал несущественной. Экономить контекст стоит там, где результат предсказуем, а не на критичных данных.
Agent Reach: интернет как набор проверяемых каналов
Третье расширение — Agent Reach. Оно не заменяет браузер одной волшебной кнопкой, а собирает несколько специализированных способов чтения источников.
На сервере сейчас работают:
- чтение обычных веб-страниц через Jina Reader;
- GitHub через установленный
gh; - YouTube через
yt-dlp; - RSS;
- открытые данные Bilibili и V2EX.
В Telegram теперь можно написать:
Используй agent-reach. Изучи последние релизы Hermes Agent,
найди важные изменения и оцени риски обновления для нашей VM.
Или передать конкретный репозиторий:
Проверь обновления FreeDeepseekAPI на GitHub.
Сравни их с нашей установленной версией и ничего не обновляй.
Установленная версия Agent Reach — 1.5.0. Она находится в отдельном Python venv, а Hermes подключает её как skill. Такая изоляция уменьшает риск конфликта зависимостей с самим агентом.
Не все каналы заработали полностью. GitHub CLI пока не авторизован для приватных репозиториев, а Exa MCP не смог пройти через используемый SOCKS-транспорт. В качестве рабочего fallback остаются штатный веб-поиск Hermes и Jina Reader.
Я намеренно не переносил на сервер cookies от личных социальных сетей. Доступ к публичным источникам и доступ к аккаунтам пользователя — разные уровни доверия.
Skill Retrieval: хорошая идея, неудачная интеграция
Четвёртым расширением стал Skill Retrieval из набора moonlight-lupin/agent-skills.
Идея правильная: вместо помещения всех навыков в prompt локальный BM25-индекс выбирает только те, которые относятся к текущему запросу. При сотне skills это должно заметно уменьшать системный контекст.
Статический аудит runtime-кода не показал опасной сетевой активности или скрытого выполнения shell-команд. Сам поиск по индексу занимал около 0,18 секунды и выбирал ожидаемые навыки.
Но полный тест выявил другую проблему: с активным plugin Hermes зависал ещё до вызова модели. После отключения Skill Retrieval тот же короткий запрос сразу возвращал ответ.
Я попробовал оставить только компактный список имён без pre_llm_call hook, но зависание повторилось. Поэтому текущее состояние такое:
skill-retrieval: installed, disabled
Это лучше, чем оставить красивую оптимизацию и получить молчащего Telegram-бота. К plugin можно вернуться после исправления совместимости с текущей версией Hermes.
Что пришлось поправить в Telegram
После перезапуска gateway проявилась отдельная проблема: обычные HTTP-запросы через SOCKS работали, getMe и тестовый getUpdates проходили, но новый Telegram adapter зависал при инициализации большого HTTP-пула.
Для gateway были заданы более консервативные параметры:
HERMES_TELEGRAM_HTTP_POOL_SIZE=16
HERMES_TELEGRAM_HTTP_POOL_TIMEOUT=15
HERMES_TELEGRAM_HTTP_CONNECT_TIMEOUT=15
HERMES_TELEGRAM_HTTP_READ_TIMEOUT=35
HERMES_TELEGRAM_HTTP_WRITE_TIMEOUT=35
HERMES_TELEGRAM_DISABLE_FALLBACK_IPS=true
Fallback IP здесь не нужен: Telegram всё равно должен идти через явно настроенный SOCKS-proxy. Чем меньше параллельных соединений создаёт бот, тем проще переживать переподключение туннеля и сетевые таймауты.
Сам gateway и FreeDeepseekAPI остаются под управлением systemd и автоматически перезапускаются при сбоях.
Как теперь пользоваться Hermes через Telegram
Для коротких задач ничего не изменилось:
Проверь свободное место на VM и пришли краткий отчёт.
Для длинных задач лучше явно включать файловый план:
/skill plan
Проверь обновления Hermes и FreeDeepseekAPI.
Изучи changelog, оцени риски, сделай резервную копию
и покажи план до внесения изменений.
Для исследования внешних источников можно прямо назвать Agent Reach:
Используй agent-reach. Найди новые версии Proxmox,
Hermes Agent и FreeDeepseekAPI за последний месяц.
Отдели обязательные обновления от необязательных.
RTK работает автоматически. Пользователю не нужно помнить о нём в каждом сообщении.
Проверка после установки
Каждое расширение проверялось отдельно. Общий минимум выглядел так:
hermes plugins doctor
agent-reach doctor
rtk --version
rtk rewrite "git status"
curl http://127.0.0.1:9655/health
systemctl --user status hermes-gateway.service
Отдельно были выполнены короткие запросы напрямую к deepseek-chat и deepseek-chat-search, а затем через Hermes. Именно последний end-to-end тест обнаружил зависание Skill Retrieval.
Перед изменениями создана резервная копия конфигурации, plugins и skills. Для агента, который сам умеет менять систему, возможность быстро вернуться к известному состоянию важнее количества установленных возможностей.
Итог
Hermes стал ближе не к обычному чат-боту, а к постоянному оператору homelab:
Telegram
|
v
Hermes Agent
|
+--> Planning with Files — держит длинный план
+--> RTK — сокращает вывод команд
+--> Agent Reach — читает внешние источники
+--> FreeDeepseekAPI — предоставляет модель и поиск
Главный результат не в числе plugins. Теперь агент умеет сохранять ход большой задачи, тратить меньше контекста на консольный шум и проверять внешние источники, не привязываясь к одному встроенному поиску модели.
А Skill Retrieval останется напоминанием о правильном порядке работы с AI-инфраструктурой:
установить -> проверить -> воспроизвести сбой -> отключить нестабильное
В homelab работающий агент полезнее агента с максимально длинным списком возможностей.