{/ Эта страница автоматически передается из навыков SKILL.md с помощью сайта/scripts/generate-skill-docs.py. Редактируйте исходный SKILL.md, а не эту страницу. /}

Агент Гермеса

Настройка, расширение или внесение вклада в Hermes Agent.

Метаданные навыки

Источник Встроенный (установлен по умолчанию)
Путь навыки/автономные-ИИ-агенты/гермес-агент
Версия 2.1.0
Автор Гермес Агент + Текниум
Лицензия Массачусетский технологический институт
Платформы Linux, MacOS, Windows
Теги гермес, настройка, конфигурация, многоагентный, порождение, cli, шлюз, разработка
Связанные навыки claude-code, codex, opencode

Справочник: полный SKILL.md:::информация

Ниже приведено полное определение навыков, которые Hermes загружает при активации этого навыка. Это то, что агент видит в качестве инструкций, когда навыки активны.

Агент Гермеса

Hermes Agent — это фреймворк AI-агентов с открытым исходным кодом от Nous Research, который работает в ваших терминалах, мессенджерах и IDE. К этой же категории относятся и Claude Code (Anthropic), Codex (OpenAI) и OpenClaw — автономные агенты для кодирования и выполнения задач, использующие инструменты вызова для взаимодействия с вашей системой. Hermes работает с любым LLM-провайдером (OpenRouter, Anthropic, OpenAI, DeepSeek, локальные модели и 15+ других) и работает на Linux, macOS и WSL.

Что делает Гермеса особенным:

Люди используют Hermes для разработки ПО, исследований, системного администрирования, анализа данных, создания контента, автономной автоматизации и всего остального, что выигрывает от AI-агента с сохранением контекста и полным доступом к системе.

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

Документация: https://hermes-agent.nousresearch.com/docs/

Быстрый старт

# Установка
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

# Интерактивный чат (по умолчанию)
hermes

# Одиночный запрос
hermes chat -q "What is the capital of France?"

# Мастер настройки
hermes setup

# Смена модели/провайдера
hermes model

# Проверка здоровья
hermes doctor

Справочник CLI

Глобальные флаги

hermes [flags] [command]

  --version, -V             Показать версию
  --resume, -r SESSION      Возобновить сессию по ID или заголовку
  --continue, -c [NAME]     Возобновить по имени или последнюю сессию
  --worktree, -w            Изолированный режим git worktree (параллельные агенты)
  --skills, -s SKILL        Предзагрузить навыки (через запятую или повторять)
  --profile, -p NAME        Использовать именованный профиль
  --yolo                    Пропустить подтверждение опасных команд
  --pass-session-id         Включить ID сессии в системный промпт

Без подкоманд по умолчанию используется чат.

Чат

hermes chat [flags]
  -q, --query TEXT          Одиночный запрос, неинтерактивный
  -m, --model MODEL         Модель (например, anthropic/claude-sonnet-4)
  -t, --toolsets LIST       Список наборов инструментов через запятую
  --provider PROVIDER       Принудительный провайдер (openrouter, anthropic, nous и т.д.)
  -v, --verbose             Подробный вывод
  -Q, --quiet               Подавить баннер, спиннер, предпросмотр инструментов
  --checkpoints             Включить контрольные точки файловой системы (/rollback)
  --source TAG              Тег источника сессии (по умолчанию: cli)

Конфигурация

hermes setup [section]      Интерактивный мастер (model|terminal|gateway|tools|agent)
hermes model                Интерактивный выбор модели/провайдера
hermes config               Просмотр текущей конфигурации
hermes config edit          Открыть config.yaml в $EDITOR
hermes config set KEY VAL   Установить значение конфигурации
hermes config path          Показать путь к config.yaml
hermes config env-path      Показать путь к.env
hermes config check         Проверить отсутствующие/устаревшие настройки
hermes config migrate       Обновить конфигурацию новыми опциями
hermes login [--provider P] OAuth-вход (nous, openai-codex)
hermes logout               Очистить сохраненную аутентификацию
hermes doctor [--fix]       Проверить зависимости и конфигурацию
hermes status [--all]       Показать статус компонентов

Инструменты и навыки

hermes tools                Интерактивное включение/отключение инструментов (curses UI)
hermes tools list           Показать все инструменты и их статус
hermes tools enable NAME    Включить набор инструментов
hermes tools disable NAME   Отключить набор инструментов

hermes skills list          Список установленных навыков
hermes skills search QUERY  Поиск в хабе навыков
hermes skills install ID    Установить навык (ID может быть идентификатором хаба ИЛИ прямой https:///SKILL.md URL; передайте --name для переопределения, если во frontmatter нет имени)
hermes skills inspect ID    Предпросмотр без установки
hermes skills config        Включение/отключение навыков для каждой платформы
hermes skills check         Проверить наличие обновлений
hermes skills update        Обновить устаревшие навыки
hermes skills uninstall N   Удалить навык из хаба
hermes skills publish PATH  Опубликовать в реестре
hermes skills browse        Просмотреть все доступные навыки
hermes skills tap add REPO  Добавить GitHub-репозиторий как источник навыков

MCP-серверы

hermes mcp serve            Запустить Hermes как MCP-сервер
hermes mcp add NAME         Добавить MCP-сервер (--url или --command)
hermes mcp remove NAME      Удалить MCP-сервер
hermes mcp list             Список настроенных серверов
hermes mcp test NAME        Проверить соединение
hermes mcp configure NAME   Переключить выбор инструментов

Шлюз (мессенджеры)

hermes gateway run          Запустить шлюз в фореграунде
hermes gateway install      Установить как фоновый сервис
hermes gateway start/stop   Управление сервисом
hermes gateway restart      Перезапустить сервис
hermes gateway status       Проверить статус
hermes gateway setup        Настроить платформы

Поддерживаемые платформы: Telegram, Discord, Slack, WhatsApp, Signal, Email, SMS, Matrix, Mattermost, Home Assistant, DingTalk, Feishu, WeCom, BlueBubbles (iMessage), Weixin (WeChat), API Server, Webhooks. Откройте WebUI через API-сервер адаптера.

Документация по платформам: https://hermes-agent.nousresearch.com/docs/user-guide/messaging/

Сессии

hermes sessions list        Список последних сессий
hermes sessions browse      Интерактивный выбор
hermes sessions export OUT  Экспорт в JSONL
hermes sessions rename ID T Переименовать сессию
hermes sessions delete ID   Удалить сессию
hermes sessions prune       Очистить старые сессии (--older-than N days)
hermes sessions stats       Статистика хранилища сессий

Cron-задачи

hermes cron list            Список задач (--all для отключенных)
hermes cron create SCHED    Создать: '30m', 'every 2h', '0 9 * * *'
hermes cron edit ID         Редактировать расписание, промпт, доставку
hermes cron pause/resume ID Управление состоянием задачи
hermes cron run ID          Запустить на следующем тике
hermes cron remove ID       Удалить задачу
hermes cron status          Статус планировщика

Вебхуки

hermes webhook subscribe N  Создать маршрут на /webhooks/<name>
hermes webhook list         Список подписок
hermes webhook remove NAME  Удалить подписку
hermes webhook test NAME    Отправить тестовый POST

Профили

hermes profile list         Список всех профилей
hermes profile create NAME  Создать (--clone, --clone-all, --clone-from)
hermes profile use NAME     Установить как sticky default
hermes profile delete NAME  Удалить профиль
hermes profile show NAME    Показать детали
hermes profile alias NAME   Управление скриптами-обертками
hermes profile rename A B   Переименовать профиль
hermes profile export NAME  Экспорт в tar.gz
hermes profile import FILE  Импорт из архива

Пулы учетных данных

hermes auth add             Интерактивный мастер учетных данных
hermes auth list [PROVIDER] Список объединенных учетных данных
hermes auth remove P INDEX  Удалить по провайдеру + индексу
hermes auth reset PROVIDER  Сбросить статус исчерпания

Другое

hermes insights [--days N]  Аналитика использования
hermes update               Обновление до последней версии
hermes pairing list/approve/revoke  Авторизация DM
hermes plugins list/install/remove  Управление плагинами
hermes honcho setup/status  Интеграция памяти Honcho (требуется плагин honcho)
hermes memory setup/status/off  Конфигурация провайдера памяти
hermes completion bash|zsh  Завершение команд для оболочки
hermes acp                  ACP-сервер (интеграция с IDE)
hermes claw migrate         Миграция из OpenClaw
hermes uninstall            Удаление Hermes

Слэш-команды (внутри сессии)

Введите их во время интерактивного чата. Новые команды строительства довольно часто; если что-то ниже выглядит конфиденциальным, выполните /help в сессии для авторитетного списка или обратиться к справочнику слэш-команд. Реестр находится в hermes_cli/commands.py — каждый потребитель (автодополнение, меню Telegram, отображение Slack, /help) берет данные из него.

Управление сессией

/new (/reset)        Новая сессия
/clear               Очистить экран + новая сессия (CLI)
/retry               Отправить последнее сообщение заново
/undo                Удалить последний обмен
/title [name]        Назвать сессию
/compress            Вручную сжать контекст
/stop                Завершить фоновые процессы
/rollback [N]        Восстановить контрольную точку файловой системы
/snapshot [sub]      Создать или восстановить снимки состояния конфигурации/состояния Hermes (CLI)
/background <prompt> Запустить промпт в фоне
/queue <prompt>      Поставить в очередь на следующий ход
/steer <prompt>      Вставить сообщение после следующего вызова инструмента, не прерывая
/agents (/tasks)     Показать активных агентов и выполняемые задачи
/resume [name]       Возобновить именованную сессию
/goal [text|sub]     Установить постоянную цель, над которой Hermes работает между ходами до достижения
                     (подкоманды: status, pause, resume, clear)
/redraw              Принудительная перерисовка всего UI (CLI)

Конфигурация

/config              Показать конфигурацию (CLI)
/model [name]        Показать или изменить модель
/personality [name]  Установить личность
/reasoning [level]   Установить уровень рассуждений (none|minimal|low|medium|high|xhigh|show|hide)
/verbose             Цикл: off  new  all  verbose
/voice [on|off|tts]  Голосовой режим
/yolo                Переключить обход подтверждений
/busy [sub]          Управлять тем, что делает Enter, пока Hermes работает (CLI)
                     (подкоманды: queue, steer, interrupt, status)
/indicator [style]   Выбрать стиль индикатора занятости TUI (CLI)
                     (стили: kaomoji, emoji, unicode, ascii)
/footer [on|off]     Переключить футер с метаданными времени выполнения шлюза в финальных ответах
/skin [name]         Изменить тему (CLI)
/statusbar           Переключить строку состояния (CLI)

Инструменты и навыки

/tools               Управление инструментами (CLI)
/toolsets            Список наборов инструментов (CLI)
/skills              Поиск/установка навыков (CLI)
/skill <name>        Загрузить навык в сессию
/reload-skills       Повторно просканировать ~/.hermes/skills/ на предмет добавленных/удаленных навыков
/reload              Перезагрузить переменные.env в текущую сессию (CLI)
/reload-mcp          Перезагрузить MCP-серверы
/cron                Управление cron-задачами (CLI)
/curator [sub]       Фоновое обслуживание навыков (status, run, pin, archive, )
/kanban [sub]        Мультипрофильная доска сотрудничества (tasks, links, comments)
/plugins             Список плагинов (CLI)

Шлюз

/approve             Одобрить ожидающую команду (шлюз)
/deny                Отклонить ожидающую команду (шлюз)
/restart             Перезапустить шлюз (шлюз)
/sethome            Установить текущий чат как домашний канал (шлюз)
/update              Обновить Hermes до последней версии (шлюз)
/topic [sub]         Включить или просмотреть сессии тем Telegram DM (шлюз)
/platforms (/gateway) Показать статус подключения платформ (шлюз)

Утилиты

/branch (/fork)      Разветвить текущую сессию
/fast                Переключить приоритетную/быструю обработку
/browser             Открыть соединение CDP-браузера
/history             Показать историю разговора (CLI)
/save                Сохранить разговор в файл (CLI)
/copy [N]            Скопировать последний ответ ассистента в буфер обмена (CLI)
/paste               Прикрепить изображение из буфера обмена (CLI)
/image               Прикрепить локальный файл изображения (CLI)

Информация

/help                Показать команды
/commands [page]     Просмотреть все команды (шлюз)
/usage               Использование токенов
/insights [days]     Аналитика использования
/gquota              Показать использование квоты Google Gemini Code Assist (CLI)
/status              Информация о сессии (шлюз)
/profile             Информация об активном профиле
/debug               Загрузить отчет об отладке (информация о системе + логи) и получить ссылки для обмена

Выход

/quit (/exit, /q)    Выйти из CLI

Ключевые пути и преобразования

~/.hermes/config.yaml       Основная конфигурация
~/.hermes/.env              API-ключи и секреты
$HERMES_HOME/skills/        Установленные навыки
~/.hermes/sessions/         Транскрипты сессий
~/.hermes/logs/             Логи шлюза и ошибок
~/.hermes/auth.json         OAuth-токены и пулы учетных данных
~/.hermes/hermes-agent/     Исходный код (если установлен через git)

Профили используют ~/.hermes/profiles/<name>/ с той же структурой.

Разделы конфигурации

Редактируйте с помощью hermes config edit или hermes config set section.key value.

Раздел Ключевые опции
model default, provider, base_url, api_key, context_length
agent max_turns (90), tool_use_enforcement
terminal backend (local/docker/ssh/modal), cwd, timeout (180)
compression enabled, threshold (0.50), target_ratio (0.20)
display skin, tool_progress, show_reasoning, show_cost
stt enabled, provider (local/groq/openai/mistral)
tts provider (edge/elevenlabs/openai/minimax/mistral/neutts)
memory memory_enabled, user_profile_enabled, provider
security tirith_enabled, website_blocklist
delegation model, provider, base_url, api_key, max_iterations (50), reasoning_effort
checkpoints enabled, max_snapshots (50)

Полный справочник конфигурации: https://hermes-agent.nousresearch.com/docs/user-guide/configuration

Провайдеры

Поддерживается 20+ провайдеров. Устанавливается через hermes model или hermes setup.

Провайдер Аутентификация Переменная окружения для ключа
OpenRouter API-ключ OPENROUTER_API_KEY
Anthropic API-ключ ANTHROPIC_API_KEY
Nous Portal OAuth hermes auth
OpenAI Codex OAuth hermes auth
GitHub Copilot Токен COPILOT_GITHUB_TOKEN
Google Gemini API-ключ GOOGLE_API_KEY или GEMINI_API_KEY
DeepSeek API-ключ DEEPSEEK_API_KEY
xAI / Grok API-ключ XAI_API_KEY
Hugging Face Токен HF_TOKEN
Z.AI / GLM API-ключ GLM_API_KEY
MiniMax API-ключ MINIMAX_API_KEY
MiniMax CN API-ключ MINIMAX_CN_API_KEY
Kimi / Moonshot API-ключ KIMI_API_KEY
Alibaba / DashScope API-ключ DASHSCOPE_API_KEY
Xiaomi MiMo API-ключ XIAOMI_API_KEY
Kilo Code API-ключ KILOCODE_API_KEY
AI Gateway (Vercel) API-ключ AI_GATEWAY_API_KEY
OpenCode Zen API-ключ OPENCODE_ZEN_API_KEY
OpenCode Go API-ключ OPENCODE_GO_API_KEY
Qwen OAuth OAuth hermes login --provider qwen-oauth
Пользовательская конечная точка Конфиг model.base_url + model.api_key в config.yaml
GitHub Copilot ACP Внешний COPILOT_CLI_PATH или Copilot CLI

Полная документация по провайдерам: https://hermes-agent.nousresearch.com/docs/integrations/providers

Наборы инструментов

Включение/отключение через hermes tools (интерактивно) или hermes tools enable/disable NAME.

Набор инструментов Что предоставляет
web Поиск в интернете и извлечение контента
search Только поиск в интернете (подмножество web)
browser Автоматизация браузера (Browserbase, Camofox или локальный Chromium)
terminal Команды оболочки и управление процессами
file Чтение/запись/поиск/патч файлов
code_execution Выполнение Python в песочнице
vision Анализ изображений
image_gen Генерация изображений AI
video Анализ и генерация видео
tts Преобразование текста в речь
skills Просмотр и управление навыками
memory Постоянная память между сессиями
session_search Поиск по прошлым разговорам
delegation Делегирование задач сабагентам
cronjob Управление запланированными задачами
clarify Запрос уточняющих вопросов у пользователя
messaging Отправка сообщений на разных платформах
todo Планирование и отслеживание задач в сессии
kanban Инструменты очереди задач для мультиагентов (ограничены для воркеров)
debugging Дополнительные инструменты интроспекции/отладки (отключены по умолчанию)
safe Минимальный набор инструментов с низким риском для заблокированных сессий
spotify Управление воспроизведением и плейлистами Spotify
homeassistant Управление умным домом (отключен по умолчанию)
discord Инструменты интеграции Discord
discord_admin Инструменты администрирования/модерации Discord
feishu_doc Инструменты для документов Feishu (Lark)
feishu_drive Инструменты для диска Feishu (Lark)
yuanbao Инструменты интеграции Yuanbao
rl Инструменты обучения с подкреплением (отключены по умолчанию)
moa Mixture of Agents (отключен по умолчанию)

Полный перечень находится в toolsets.py как словарь TOOLSETS; _HERMES_CORE_TOOLS — это набор по умолчанию, от которого наследуют большинство платформ.

Изменения инструментов вступают в силу после /reset (новая сессия). Они НЕ применяются в середине разговора для сохранения кэширования промптов.


Переключатели безопасности и конфиденциальности

Распространенные переключатели "почему Hermes делает X с моим выводом / вызовами инструментов / командами?" — и точные команды для их изменения. Большинство из них требуют новой сессии (/reset в чате или запуск нового вызова hermes), потому что они читаются один раз при запуске.

Редактирование секретов в выводе инструментов

Редактирование секретов отключено по умолчанию — вывод инструментов (stdout терминала, read_file, веб-контент, сводки сабагентов и т.д.) передается без изменений. Если пользователь хочет, чтобы Hermes автоматически маскировал строки, похожие на API-ключи, токены и секреты, прежде чем они попадут в контекст разговора и логи:

hermes config set security.redact_secrets true       # включить глобально

Требуется перезапуск. security.redact_secrets снимается в момент импорта — переключение его в середине сессии (например, через export HERMES_REDACT_SECRETS=true из инструмента вызова) НЕ в изменении в зависимости от текущего процесса. Скажите пользователю выбрать hermes config set Security.redact_secrets true в терминале, а затем запустить новую сессию. Это сделано намеренно, чтобы LLM не могла изменить этот параметр сама в середине задачи.

Выключить снова:

hermes config set security.redact_secrets false

Редактирование PII в шлюзе сообщений

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

hermes config set privacy.redact_pii true    # включить
hermes config set privacy.redact_pii false   # отключить (по умолчанию)

Подтверждение команды

По умолчанию (approvals.mode: manual) Гермес запрашивает подтверждение перед выполнением команды обработки, помеченных как деструктивные (rm -rf, git reset --hard и т.д.). Режимы:

hermes config set approvals.mode smart       # рекомендуемая золотая середина
hermes config set approvals.mode off         # обходить всё (не рекомендуется)

Обход без изменений конфигурации для одного вызова: - гермес --йоло... - экспортировать HERMES_YOLO_MODE=1

Примечание: YOLO / approvals.mode: off НЕ отключает редактирование секретов. Они независимы.

Белый список хуков обработки

Руководители с хуками требуют дополнительного вмешательства в список некоторых перед внедрением. Управляется через ~/.hermes/shell-hooks-allowlist.json — запрашивается в интерактивном режиме при первом запуске хука.

Отключение инструментов web/browser/image-gen

Чтобы полностью изолировать модель от сетевых или медиа-инструментов, подключите hermestools и переключите для каждой платформы. Вступает в силу при следующей сессии (/reset). См. раздел «Инструменты и навыки» выше.


Голос и транскрипция

СТТ (голос → текст)

Голосовые сообщения от мессенджеров транскрибируются автоматически.

Приоритет провайдера (автоопределение): 1. Локальный fast-whisper — бесплатно, без API-переключателя: pip install fast-whisper 2. Groq Whisper — бесплатный тариф: установите GROQ_API_KEY 3. OpenAI Whisper — платный: установите VOICE_TOOLS_OPENAI_KEY 4. Mistral Voxtral — установите MISTRAL_API_KEY

Конфигурация:

stt:
  enabled: true
  provider: local        # local, groq, openai, mistral
  local:
    model: base          # tiny, base, small, medium, large-v3

TTS (текст → голос)

Провайдер Переменная окружения Бесплатно?
Край TTS Нет Да (по умолчанию)
ОдиннадцатьЛабс ELEVENLABS_API_KEY Бесплатный тариф
ОпенАИ VOICE_TOOLS_OPENAI_KEY Платный
МиниМакс MINIMAX_API_KEY Платный
Мистраль (Вокстрал) MISTRAL_API_KEY Платный
NeuTTS (локальный) Нет (pip install neutts[all] + espeak-ng) Бесплатно

Голосовые команды: /voice on (голос-в-голос), /voice tts (всегда голос), /voice off.


Порождение дополнительных экземпляров Hermes

Запускайте дополнительные процессы Hermes как полностью независимые подпроцессы — сессию, инструменты и окружение.

Когда использовать это вместо Delegate_task

делегат_задача Порождение процесса Гермес
Изоляция Отдельный разговор, общий процесс Полностью независимый процесс
Длительность Минуты (ограничено родительским циклом) Часы/дни
Доступ к инструментам Подмножество инструментов родителя Полный доступ к инструментам
Интерактивность Нет Да (режим PTY)
Сценарий использования Быстрые параллельные задачи Длительные автономные миссии

Одноразовый режим

terminal(command="hermes chat -q 'Research GRPO papers and write summary to ~/research/grpo.md'", timeout=300)

# Фон для длительных задач:
terminal(command="hermes chat -q 'Set up CI/CD for ~/myapp'", background=true)

Интерактивный режим PTY (через tmux)

Гермес использует Rapid_toolkit, для этого требуется реальный терминал. Используйте tmux для интерактивного порождения:

# Запуск
terminal(command="tmux new-session -d -s agent1 -x 120 -y 40 'hermes'", timeout=10)

# Ожидание запуска, затем отправка сообщения
terminal(command="sleep 8 && tmux send-keys -t agent1 'Build a FastAPI auth service' Enter", timeout=15)

# Чтение вывода
terminal(command="sleep 20 && tmux capture-pane -t agent1 -p", timeout=5)

# Отправка последующего сообщения
terminal(command="tmux send-keys -t agent1 'Add rate limiting middleware' Enter", timeout=5)

# Выход
terminal(command="tmux send-keys -t agent1 '/exit' Enter && sleep 2 && tmux kill-session -t agent1", timeout=10)

Мультиагентская координация

# Агент A: бэкенд
terminal(command="tmux new-session -d -s backend -x 120 -y 40 'hermes -w'", timeout=10)
terminal(command="sleep 8 && tmux send-keys -t backend 'Build REST API for user management' Enter", timeout=15)

# Агент B: фронтенд
terminal(command="tmux new-session -d -s frontend -x 120 -y 40 'hermes -w'", timeout=10)
terminal(command="sleep 8 && tmux send-keys -t frontend 'Build React dashboard for user management' Enter", timeout=15)

# Проверка прогресса, передача контекста между ними
terminal(command="tmux capture-pane -t backend -p | tail -30", timeout=5)
terminal(command="tmux send-keys -t frontend 'Here is the API schema from the backend agent:...' Enter", timeout=5)

Возобновление сессии

# Возобновить последнюю сессию
terminal(command="tmux new-session -d -s resumed 'hermes --continue'", timeout=10)

# Возобновить конкретную сессию
terminal(command="tmux new-session -d -s resumed 'hermes --resume 20260225_143052_a1b2c3'", timeout=10)

Советы


Долговечные и фоновые системы

Четыре системы работают параллельно с основным циклом разговора. Краткий справочник здесь; полные заметки разработчика находятся в AGENTS.md, пользовательская документация — в website/docs/user-guide/features/.

Делегирование (delegate_task)

Синхронное порождение сабагента — родитель ждет сводки от дочернего агента, прежде чем продолжить свой цикл. Изолированный контекст + сессия терминала.

Конфигурация: delegation.* в config.yaml.

Cron (запланированные задачи)

Долговечный планировщик — cron/jobs.py + cron/scheduler.py. Управляйте им через инструмент cronjob, CLI hermes cron (list, add, edit, pause, resume, run, remove) или слэш-команду /cron.

Пользовательская документация: https://hermes-agent.nousresearch.com/docs/user-guide/features/cron

Куратор (жизненный цикл навыков)

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

Конфигурация: curator.* (enabled, interval_hours, min_idle_hours, stale_after_days, archive_after_days, backup.*). Пользовательская документация: https://hermes-agent.nousresearch.com/docs/user-guide/features/curator

Канбан (мультиагентная очередь задач)

Долговечная SQLite-доска для мультипрофильной / мультиворкерной коллаборации. Пользователи управляют ей через hermes kanban <verb>; воркеры, порожденные диспетчером, видят сфокусированный набор инструментов kanban_*, ограниченный HERMES_KANBAN_TASK, так что след в схеме равен нулю вне процессов воркеров.

Пользовательская документация: https://hermes-agent.nousresearch.com/docs/user-guide/features/kanban


Особенности Windows

Hermes работает нативно на Windows (PowerShell, cmd, Windows Terminal, git-bash mintty, VS Code integrated terminal). Большая часть работает из коробки, но есть ряд отличий между Win32 и POSIX, которые нас кусали — документируйте новые здесь, когда сталкиваетесь, чтобы следующий человек (или следующая сессия) не переоткрывал их с нуля.

Ввод / Сочетания клавиш

Alt+Enter не вставляет новую строку. Windows Terminal перехватывает Alt+Enter на уровне терминала для переключения полноэкранного режима — нажатие клавиши никогда не достигает prompt_toolkit. Используйте Ctrl+Enter вместо этого. Windows Terminal отправляет Ctrl+Enter как LF (c-j), отличный от обычного Enter (c-m / CR), и CLI привязывает c-j к вставке новой строки только на win32 (см. _bind_prompt_submit_keys + привязку c-j только для Windows в cli.py). Побочный эффект: сырое нажатие Ctrl+J также вставляет новую строку на Windows — неизбежно, потому что Windows Terminal сворачивает Ctrl+Enter и Ctrl+J в один и тот же код клавиши на уровне консольного API Win32. Никакой конфликтующей привязки для Ctrl+J на Windows не существовало, так что это безвредный побочный эффект.

mintty / git-bash ведет себя так же (полноэкранный режим на Alt+Enter), если только вы не отключите сочетания Alt+Fn в Options → Keys. Проще просто использовать Ctrl+Enter.

Диагностика привязок клавиш. Запустите python scripts/keystroke_diagnostic.py (корень репозитория), чтобы увидеть, как именно prompt_toolkit идентифицирует каждое нажатие в текущем терминале. Отвечает на вопросы вроде "приходит ли Shift+Enter как отдельная клавиша?" (почти никогда — большинство терминалов сворачивают его в обычный Enter) или "какую байтовую последовательность мой терминал отправляет для Ctrl+Enter?" Именно так был установлен факт Ctrl+Enter = c-j.

Конфигурация / Файлы

HTTP 400 "No models provided" при первом запуске. config.yaml был сохранен с UTF-8 BOM (обычно, когда приложения Windows записывают его). Пересохраните как UTF-8 без BOM. hermes config edit записывает без BOM; ручные правки в Notepad — обычный виновник.

execute_code / Песочница

WinError 10106 ("The requested service provider could not be loaded or initialized") от дочернего процесса песочницы — он не может создать сокет AF_INET, поэтому резервный вариант loopback-TCP RPC не срабатывает до connect(). Коренная причина обычно не в сломанном Winsock LSP; это собственный очиститель окружения Hermes, удаляющий SYSTEMROOT / WINDIR / COMSPEC из окружения дочернего процесса. Модулю Python socket нужен SYSTEMROOT для поиска mswsock.dll. Исправлено через белый список _WINDOWS_ESSENTIAL_ENV_VARS в tools/code_execution_tool.py. Если вы все еще сталкиваетесь, выведите os.environ внутри блока execute_code, чтобы подтвердить, что SYSTEMROOT установлен. Полный рецепт диагностики в references/execute-code-sandbox-env-windows.md.

Тестирование / Вклад

scripts/run_tests.sh не работает как есть на Windows — он ищет POSIX-структуру venv (.venv/bin/activate). Установленный Hermes venv в venv/Scripts/ также не имеет pip или pytest (урезан для размера установки). Обход: установите pytest + pytest-xdist + pyyaml в пользовательский сайт-пакет системного Python 3.11, затем вызывайте pytest напрямую с установленным PYTHONPATH:

"/c/Program Files/Python311/python" -m pip install --user pytest pytest-xdist pyyaml
export PYTHONPATH="$(pwd)"
"/c/Program Files/Python311/python" -m pytest tests/foo/test_bar.py -v --tb=short -n 0

Используйте -n 0, а не -n 4addopts по умолчанию в pyproject.toml уже включает -n, и гарантии паритета CI-оберток не применяются вне POSIX.

Тесты, специфичные для POSIX, обязательно в защитных пропусках. Распространенные маркеры уже в кодовой базе: - Симлинки — повышенные привилегии на Windows. - Режимы файлов 0o600 — биты режима POSIX не применяются к NTFS по умолчанию. - signal.SIGALRM — только Unix (см. tests/conftest.py::_enforce_test_timeout) - Регрессии Winsock/специфичные для Windows — @pytest.mark.skipif(sys.platform!= "win32",...)

Используйте существующий стиль пропуска (sys.platform == "win32" или sys.platform.startswith("win")), чтобы достичь согласия со всей частью набора.

Путь / Файловая система

Окончания строки. Git может завершить LF будет заменен на CRLF в следующий раз Git касается этого». Косметика —.gitattributes` репозитория нормализует. Не позволяйте редакторам автоматически конвертировать записанные файлы с POSIX-переводами строк в CRLF.

Прямые слеши работают почти везде. C:/Users/... принимается всеми инструментами Hermes и большинством Windows API. Предположите прямые следы в коде и логах — избегает экрана обратных слешей в bash.


Устранение неполадок

Голос не работает

  1. Проверьте stt.enabled: true в config.yaml.
  2. Проверьте провайдера: pip install fast-whisper или установите API-ключ.
  3. В шлюзе: /restart. В CLI: откройте и перезапустите.

Инструмент недоступен

  1. hermestools — проверьте, включен ли набор инструментов для вашей платформы.
  2. Некоторые инструменты требуют применения окружения (проверьте .env)
  3. /reset после включения инструментов

Проблемы с моделью/провайдером

  1. hermes Doctor — проверьте конфигурацию и в зависимости от
  2. hermes login — повторная аутентификация OAuth-провайдеров.
  3. Проверьте, что в .env правильный API-ключ.
  4. Copilot 403: токены gh auth login НЕ работают для Copilot API. Вы должны использовать потоковый код устройства OAuth, специальный для Copilot, через hermes model → GitHub Copilot.

Изменения не вступают в силу

Навыки не указаны

  1. Список навыков Гермеса — проверьте, установлен ли
  2. Конфигурация навыков Гермеса — проверьте включение для платформы.
  3. Подтвердите явно: /skill name или hermes -s name

Проблемы с шлюзом

Сначала проверьте логи:

grep -i "failed to send\|error" ~/.hermes/logs/gateway.log | tail -20

Распространенные проблемы шлюза: - Шлюз умирает при выходе из SSH: Включите задержку: sudo Loginctl Enable-Linger $USER - Шлюз умирает при закрытии WSL2: WSL2 требует systemd=true в /etc/wsl.conf для работы systemd-сервисов. Без этого шлюз переключается на nohup (умирает при закрытии сессии). - Цикл падений шлюза: Сбросьте состояние ошибки: systemctl --user reset-failed hermes-gateway

Проблемы, специфичные для платформы

Вспомогательные модели не работают

Если задачи вспомогательные (видение, сжатие, session_search) молча не работают, провайдер auto не может найти бэкенд. Установите либо OPENROUTER_API_KEY, либо GOOGLE_API_KEY, либо явно настроив провайдера для каждой вспомогательной задачи:

hermes config set auxiliary.vision.provider <your_provider>
hermes config set auxiliary.vision.model <model_name>

Где что искать

Ищете... Местоположение
Опции конфигурации hermes config edit или Документация по конфигурации
Доступные инструменты список инструментов Hermes или Справочник инструментов
Слэш-команды /help в сессии или Справочник слэш-команд
Каталог навыков Просмотр навыков Гермеса или Каталог навыков
Настройка провайдера модель Гермеса или Руководство по провайдерам
Настройка платформы Настройка шлюза Гермес или Документация по мессенджерам
MCP-серверы hermes mcp list или Руководство по MCP
Профили список профилей Гермеса или Документация по профилям
Cron-задачи hermes cron list или Документация по cron
Память Состояние памяти Гермеса или Документация по памяти
Переменные окружения hermes config env-path или Справочник окружения
Команды CLI hermes --help или Справочник CLI
Логи шлюза ~/.hermes/logs/gateway.log
Файлы сессий ~/.hermes/sessions/ или просмотр сеансов Hermes
Исходный код ~/.hermes/гермес-агент/

Краткий справочник для контрибьюторов

Для случайных участников и авторов PR. Полная документация для разработчиков: https://hermes-agent.nousresearch.com/docs/developer-guide/

Структура проекта

hermes-agent/
├── run_agent.py          # AIAgent — основной цикл разговора
├── model_tools.py        # Обнаружение и диспетчеризация инструментов
├── toolsets.py           # Определения наборов инструментов
├── cli.py                # Интерактивный CLI (HermesCLI)
├── hermes_state.py       # Хранилище сессий SQLite
├── agent/                # Построитель промптов, сжатие контекста, память, маршрутизация моделей, пулы учетных данных, диспетчеризация навыков
├── hermes_cli/           # Подкоманды CLI, конфигурация, настройка, команды
   ├── commands.py       # Реестр слэш-команд (CommandDef)
   ├── config.py         # DEFAULT_CONFIG, определения переменных окружения
   └── main.py           # Точка входа CLI и argparse
├── tools/                # Один файл на инструмент
   └── registry.py       # Центральный реестр инструментов
├── gateway/              # Шлюз для мессенджеров
   └── platforms/        # Адаптеры платформ (telegram, discord и т.д.)
├── cron/                 # Планировщик задач
├── tests/                # ~3000 pytest-тестов
└── website/              # Сайт документации Docusaurus

Конфигурация: ~/.hermes/config.yaml (настройки), ~/.hermes/.env (API-ключи).

Добавление инструмента (3 файла)

1. Создайте tools/your_tool.py:

import json, os
from tools.registry import registry

def check_requirements() -> bool:
    return bool(os.getenv("EXAMPLE_API_KEY"))

def example_tool(param: str, task_id: str = None) -> str:
    return json.dumps({"success": True, "data": "..."})

registry.register(
    name="example_tool",
    toolset="example",
    schema={"name": "example_tool", "description": "...", "parameters": {...}},
    handler=lambda args, **kw: example_tool(
        param=args.get("param", ""), task_id=kw.get("task_id")),
    check_fn=check_requirements,
    requires_env=["EXAMPLE_API_KEY"],
)

2. Добавьте в toolsets.py → список _HERMES_CORE_TOOLS.

Автообнаружение: любой файл tools/*.py с вызовом registry.register() на верхнем уровне импортируется автоматически — ручной список не нужен.

Все обработчики должны вернуть JSON-строки. Используйте get_hermes_home() для путей, никогда не хардкодируйте ~/.hermes.

Добавление слэш-команды

  1. Добавьте CommandDef в COMMAND_REGISTRY в hermes_cli/commands.py
  2. Добавьте обработчик в cli.pyprocess_command()
  3. (Необязательно) Добавьте обработчик шлюза в gateway/run.py

Все пользователи (текстовая информация, автодополнение, меню Telegram, отображение Slack) автоматически получают данные из центрального реестра.

Цикл агента (высокий уровень)

run_conversation():
  1. Построить системный промпт
  2. Цикл, пока итерации < max:
     a. Вызвать LLM (сообщения в формате OpenAI + схемы инструментов)
     b. Если tool_calls  диспетчеризация каждого через handle_function_call()  добавить результаты  продолжить
     c. Если текстовый ответ  вернуть
  3. Сжатие контекста срабатывает автоматически при приближении к лимиту токенов

Тестирование

python -m pytest tests/ -o 'addopts=' -q   # Полный набор
python -m pytest tests/tools/ -q            # Конкретная область

Контрибьюторы в Windows: scripts/run_tests.sh в настоящее время ищет POSIX-venv (.venv/bin/activate / venv/bin/activate) и выдает ошибку в Windows, где структура venv/Scripts/activate + python.exe. Установленный venv Hermes в venv/Scripts/ также не имеет pip или pytest — он вырезан для размера установки конечного пользователя. Обход: установите pytest + pytest-xdist + pyyaml ​​в пользовательский сайт-пакет системного Python 3.11 (/c/Program Files/Python311/python -m pip install --user pytest pytest-xdist pyyaml), затем запустите тесты напрямую:

export PYTHONPATH="$(pwd)"
"/c/Program Files/Python311/python" -m pytest tests/tools/test_foo.py -v --tb=short -n 0

Используйте -n 0 (а не -n 4), потому что addopts по умолчанию в pyproject.toml уже включает -n, и гарантии паритета CI-обертки не применяются вне POSIX.

Кросс-платформенные пропуски: тесты, использующие системные вызовы только для POSIX, обязательно в пропуске маркера. Распространенные уже в кодовой базе: - Создание симлинков → @pytest.mark.skipif(sys.platform == "win32", Reason="Симлинки требуют повышенных привилегий в Windows") (см. tests/cron/test_cron_script.py) - Режимы файлов POSIX (0o600 и т.д.) → @pytest.mark.skipif(sys.platform.startswith("win"), Reason="Биты режима POSIX не применяются в Windows") (см. tests/hermes_cli/test_auth_toctou_file_modes.py) - signal.SIGALRM → только Unix (см. tests/conftest.py::_enforce_test_timeout) - Регрессионные тесты Winsock / специфичные для Windows → @pytest.mark.skipif(sys.platform!= "win32", Reason="Регрессия, специфичная для Windows")

Монки-патчинг sys.platform недостаточен, когда тестируемый код также выдает platform.system() / platform.release() / platform.mac_ver(). Эти функции независимо перечитывают реальную ОС, поэтому тест, установив sys.platform="linux" на Windows-раннере, все равно увидит platform.system() == "Windows" и пойдет по ветке Windows. Патчите все три вместе:

monkeypatch.setattr(sys, "platform", "linux")
monkeypatch.setattr(platform, "system", lambda: "Linux")
monkeypatch.setattr(platform, "release", lambda: "6.8.0-generic")

См. tests/agent/test_prompt_builder.py::TestEnvironmentHints для рабочего примера.

Расширение блока окружения выполнение в системном режиме

Фактическая информация о хост-ОС, домашней директории пользователя, cwd, бэкенде терминала и оболочке (bash vs. PowerShell в Windows) выводится из agent/prompt_builder.py::build_environment_hints(). Здесь же находятся подсказка WSL и логика зондирования для каждого бэкенда. Соглашение:

Полные заметки по дизайну, точные выводные строки и подводные камни: ссылки/prompt-builder-environment-hints.md.

Шаблон безопасности рефакторинга (защита POSIX-эквивалентности): когда вы извлекаете встроенную логику в хелпер, которая обеспечивает поведение, специфичное для Windows/плат, сохраняя функцию-оракул _legacy_<name> в тестовом файле, который является дословной копией исходного кода, затем параметризуйте-дифференциал против нее. Пример: tests/tools/test_code_execution_windows_env.py::TestPosixEquivalence. Это фиксирует инвариант, что поведение POSIX идентично побитно, и заставляет любой будущий дрейф громко проваливаться с четким диффом.

столкновение с коммитами

type: concise subject line

Optional body.

Типы: fix:, feat:, refactor:, docs:, chore:

Ключевые правила