Перейти к основному содержимому

Hermes Agent: от дефолта до production — мой сетап

·1258 слов·6 минут
Дмитрий Иванов
Автор
Дмитрий Иванов
От бэкенда до полного цикла с AI

Когда я впервые запустил Hermes, я думал: «ну, консольный агент, сам всё настрою». А оказалось, что из коробки это уже платформа: CLI, TUI с вкладками, веб-дашборд на 9119 порту, gateway под 20 платформ, cron, MCP, память, десктопное приложение, интеграция с редакторами, около 70 встроенных скиллов.

Но когда начинаешь пользоваться серьёзно — упираешься в ограничения. За полтора месяца я докрутил сетап так, что сейчас это уже не «консольный агент», а личная экосистема.


Что Hermes даёт из коробки
#

Я не буду перечислять всё — только то, что реально использую.

Интерфейсы. CLI (hermes chat) с мультилайн-редактором, TUI, веб-дашборд для конфига и сессий. Gateway подключает Telegram, Discord, Signal, Email и ещё штук 15 — но из коробки он выключен.

Системные штуки, которые пригодились:

  • Встроенный cron — сейчас на нём крутится 11 задач
  • MCP — TwentyCRM и Apple Notes
  • Subagent delegation — иногда раздаю задачи дочерним агентам
  • Компрессия контекста (я её выключил)
  • Browser automation — для QA
  • 6 terminal backends — я использую local и SSH

Что я поменял в дефолтах:

  • Модель: пустая строка → DeepSeek v4 Flash (прямой API)
  • Gateway: выключен → Telegram 24/7
  • Компрессия: включена → выключена (DeepSeek держит контекст, aux-модель только ест токены)
  • Streaming: true → false
  • Cron: 0 задач → 11
  • MCP: 0 → 2
  • Профили: 1 → 5
  • tool_progress: false → true (вижу каждый вызов)

Память: то, с чего всё началось
#

Это самое большое изменение. У Hermes из коробки два уровня памяти — MEMORY.md (2200 символов) и USER.md (1375). Оба загружаются в системный промпт каждой сессии. Для базы хватает, но когда начинаешь активно пользоваться — они быстро забиваются. А скрипт оптимизации при перезаписи теряет данные.

Я расширил это до 8 уровней:

Уровень 0:  memory-map.md — read-only карта для агента (chmod 444)
Уровень 1:  MEMORY.md — только указатели на хранилища (5000 символов)
Уровень 2:  USER.md — преференсы и профиль (4000 символов)
Уровень 3:  Fact Store — структурированные факты (~270 штук)
Уровень 4:  ChromaDB — семантический поиск (2023 документа)
Уровень 5:  Obsidian — мои заметки в PARA-структуре
Уровень 6:  NotebookLM — временные исследования
Уровень 7:  SSH — тяжёлые вычисления и локальные LLM на Omarchy

Как это работает. Агент читает memory-map → видит иерархию хранилищ → идёт в MEMORY.md (указатели) → за деталями лезет в Fact Store или ChromaDB. Всё, что не нужно в каждом промпте, живёт на нижних уровнях. Экономия токенов без потери данных.

Fact Store — структурированная база фактов с entity resolution и trust scoring. Агент пишет сюда, а не в MEMORY.md. Сейчас ~270 фактов, может расти без ограничения.

ChromaDB индексирует три источника: Obsidian (303 документа), Apple Notes (645) и Python-проекты (1409). Итого 2023 документа, ~20 MB. Пишу «найди, где я писал про Jellyfin» — и агент находит, даже если в запросе нет слов из заголовка.


Apple интеграция: от «есть в списке» до «работает»
#

В Hermes из коробки есть 5 Apple-скиллов. Skills есть — но не настроены.

Apple Notes — главное изменение. Из коробки агент читает заметки через memo CLI на Python+JXA: 6.5 минут на 644 заметки, 697 дубликатов, периодически падает. Я поставил apple-notes-mcp — Rust-сервер на ScriptingBridge. 15x быстрее: 26 секунд, ноль дубликатов, стабильно. Сверху — инкрементальная индексация в ChromaDB каждые 12 часов через cron.

iMessage. Skill есть, CLI (imsg) установлен. Я добавил интеграцию в gateway — теперь могу отправить iMessage прямо из Telegram-чата.

Apple Reminders. Работает через remindctl с конкретными списками. Можно добавить напоминание голосом через Telegram.

FindMy. Трекинг AirTag. Полезно, когда «где мой рюкзак».

Весь Apple-стек доступен через единый поисковый скрипт вместе с Obsidian и Python-проектами.


Архитектура: две машины, один агент
#

Hermes работает на моём MacBook локально. Для тяжёлых задач есть Omarchy — Arch Linux на десктопе с TITAN X Pascal (12GB VRAM). Туда я настроил SSH для агента.

┌─────────────────────┐     SSH     ┌──────────────────┐
│   macOS MacBook     │ ──────────▶ │  Omarchy (Arch)  │
│                     │             │                  │
│  • Hermes Agent     │             │  • Ollama (LLMs) │
│  • Telegram gateway │             │  • ChromaDB      │
│  • Apple-стек       │             │  • TwentyCRM MCP │
│  • Obsidian vault   │             │  • PenPot        │
│  • Локальные файлы  │             │  • Тяжёлые задачи│
└─────────────────────┘             └──────────────────┘

Две машины, один агент. Пишу в Telegram — работает там, где надо. Тяжёлые индексации и LLM — на Omarchy, повседневные задачи — локально.


Прозрачность: я вижу каждый шаг
#

Я настроил систему так, чтобы ни один вызов не проходил незамеченным. Без прозрачности агент — чёрный ящик.

НастройкаУ меняЭффект
tool_progress_command: trueВклКаждый вызов терминала — в Telegram
streaming: falseВыклАгент не стримит текст поверх tool calls
approvals.manual: trueВклОпасные команды (rm -rf, git reset) требуют подтверждения
security.redact_secrets: trueВклAPI-ключи скрываются из вывода

Плюс cron mode: deny — запланированные задачи не выполняют опасные команды. Если что-то пошло не так — пишу «стоп».


Hats: роли вместо профилей
#

В оригинале есть gstack от Garry Tan — ~30 slash-команд для Claude Code, каждая с методологией. Я адаптировал нужные мне роли и назвал их hats. Один агент, один профиль — переключает роль под задачу.

У меня 13 hats — 8 одиночных и 5 комбинированных циклов:

Одиночные роли:

  • Strategist — стратегическое мышление с форсирующими вопросами: кто будет платить? что можно запустить завтра?
  • Architect — архитектура до кода: data flow, state transitions, failure modes, ADR
  • CSO — security audit: от секретов в git history до OWASP Top 10 и STRIDE
  • Debugger — железный закон: не чинить, пока не найден root cause
  • QA — smoke test, формы, empty states, HTML integrity
  • Reviewer — code review: SQL injection, race conditions, scope drift
  • Shipper — release engineer: sync, test, version, changelog, PR
  • Documenter — документация по Diataxis после мержа

Комбинированные циклы (прогон через несколько ролей):

  • full-cycle: Strategist → Architect → Dev → Reviewer → Shipper → Documenter
  • fix: Debugger → QA → Documenter
  • quick-ship: Strategist → Architect → Dev → Shipper → Documenter
  • research: Strategist → Architect → Documenter
  • audit: Architect → CSO → Architect v2

Загружаю /skill strategist — в промпте появляется методология Strategist: 6 вопросов, premise challenge, reference паттерны. Пока не сниму шляпу.


Остальные детали
#

50+ кастомных skills. Ни один не из хаба — все написаны под мои задачи: от утреннего ритуала с погодой до Docker-стеков и tailnet.

11 cron-задач. LLM-задачи (бесплатная модель через OpenRouter): утреннее метео + продуктивность, напоминание об идеях, вечерний daily note. Script-only: индексация Obsidian (каждые 6 ч), Apple Notes (каждые 12 ч), Python-проектов (ежедневно), оптимизация памяти, cost dashboard.

5 профилей. default (DeepSeek), zai (бывший GLM), orchestrator (мульти-агенты), local (Ollama на Omarchy), developer (для экспериментов).

Telegram-first. Пишу в чат — агент отвечает. Не открываю терминал, не лезу в дашборд.

PenPot через MCP — open-source Figma на Omarchy. Агент создаёт и редактирует дизайны из чата.

MagicPath — поиск и установка UI-компонентов через AI. Официально не поддерживает Hermes, подключил вручную через npx.


Если коротко
#

АспектДефолтУ меня
ИнтерфейсCLI + dashboardTelegram-first
GatewayВыключенTelegram 24/7
МодельНе заданаDeepSeek v4 Flash
КомпрессияВклВыкл
Память2 уровня8 уровней
Кастомные skills0~50
Cron011 задач
MCP02 сервера
Профили15
tool_progressСкрытоВсё на виду

Самое большое отличие — Telegram как точка входа. Я не открываю терминал, чтобы спросить о погоде, напомнить об идее или запустить индексацию. Я пишу в чат.

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

Третье — cron-автоматизация. Дефолтный Hermes ничего не делает, пока ты не напишешь. Мой просыпается, проверяет погоду, индексирует заметки, напоминает об идеях.

Четвёртое — Apple-стек. Не «есть skill, но не настроен», а работающие инструменты: Apple Notes в ChromaDB, iMessage из чата, Reminders голосом.


Записано 16 июня 2026. Сетап продолжает меняться.