🏠 Главная › user guide › autonomous ai agents hermes agent
{/ Эта страница автоматически передается из навыков SKILL.md с помощью сайта/scripts/generate-skill-docs.py. Редактируйте исходный SKILL.md, а не эту страницу. /}
Агент Гермеса
Настройка, расширение или внесение вклада в Hermes Agent.
Метаданные навыки
Источник
Встроенный (установлен по умолчанию)
Путь
навыки/автономные-ИИ-агенты/гермес-агент
Версия
2.1.0
Автор
Гермес Агент + Текниум
Лицензия
Массачусетский технологический институт
Платформы
Linux, MacOS, Windows
Теги
гермес, настройка, конфигурация, многоагентный, порождение, cli, шлюз, разработка
Ниже приведено полное определение навыков, которые Hermes загружает при активации этого навыка. Это то, что агент видит в качестве инструкций, когда навыки активны.
Агент Гермеса
Hermes Agent — это фреймворк AI-агентов с открытым исходным кодом от Nous Research, который работает в ваших терминалах, мессенджерах и IDE. К этой же категории относятся и Claude Code (Anthropic), Codex (OpenAI) и OpenClaw — автономные агенты для кодирования и выполнения задач, использующие инструменты вызова для взаимодействия с вашей системой. Hermes работает с любым LLM-провайдером (OpenRouter, Anthropic, OpenAI, DeepSeek, локальные модели и 15+ других) и работает на Linux, macOS и WSL.
Что делает Гермеса особенным:
Самообучение навыкам — Гермес учится на опыте, сохраняя повторяющиеся процедуры в видеонавыках. Когда он решает сложную проблему, обнаруживает рабочий процесс или получает исправления, он может сохранить эти знания в качестве навыка документа, который загружается в будущие сессии. Навыки накапливаются со временем, что позволяет агентам лучше справляться с конкретными задачами и вызовами.
Постоянная память между сессиями — запоминает, кто вы, ваши предпочтения, детали окружения и сохраненные уроки. Подключаемые бэкенды памяти (встроенный, Honcho, Mem0 и другие) позволяют выбирать, как работает память.
Мультиплатформенный шлюз — один и тот же агент работает в Telegram, Discord, Slack, WhatsApp, Signal, Matrix, Email и еще на 10+ других платформах с полным доступом к инструментам, а не только в чате.
Независимость от провайдера — меняйте модели и провайдеров в середине рабочего процесса, не меняя ничего другого. Пулы учетных данных автоматически ротируются между несколькими API-ключами.
Профили — запускайте несколько различных экземпляров Hermes с изолированными конфигами, сессиями, навыками и памятью.
Люди используют Hermes для разработки ПО, исследований, системного администрирования, анализа данных, создания контента, автономной автоматизации и всего остального, что выигрывает от AI-агента с сохранением контекста и полным доступом к системе.
Этот навык помогает вам эффективно работать с агентом Hermes — настраивать его, конфигурировать функции, использовать дополнительный экземпляр агента, использовать неполадки, находить нужные команды и настройки, а также понимать, как работает система, когда вам нужно расширить или внести в нее вклад.
# Установка
curl-fsSLhttps://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh|bash
# Интерактивный чат (по умолчанию)
hermes
# Одиночный запрос
hermeschat-q"What is the capital of France?"# Мастер настройки
hermessetup
# Смена модели/провайдера
hermesmodel
# Проверка здоровья
hermesdoctor
Справочник 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 сессии в системный промпт
Без подкоманд по умолчанию используется чат.
Чат
hermeschat[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 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 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 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) берет данные из него.
~/.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.
Полный справочник конфигурации: 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-ключи, токены и секреты, прежде чем они попадут в контекст разговора и логи:
Требуется перезапуск.security.redact_secrets снимается в момент импорта — переключение его в середине сессии (например, через export HERMES_REDACT_SECRETS=true из инструмента вызова) НЕ в изменении в зависимости от текущего процесса. Скажите пользователю выбрать hermes config set Security.redact_secrets true в терминале, а затем запустить новую сессию. Это сделано намеренно, чтобы LLM не могла изменить этот параметр сама в середине задачи.
Выключить снова:
hermesconfigsetsecurity.redact_secretsfalse
Редактирование PII в шлюзе сообщений
Отдельно от редактирования секретов. При включении шлюза хеширует идентификаторы пользователей и удаляет номера телефонов из контекста сессии до того, как он попадет к моделям:
hermesconfigsetprivacy.redact_piitrue# включить
hermesconfigsetprivacy.redact_piifalse# отключить (по умолчанию)
Подтверждение команды
По умолчанию (approvals.mode: manual) Гермес запрашивает подтверждение перед выполнением команды обработки, помеченных как деструктивные (rm -rf, git reset --hard и т.д.). Режимы:
ручной — всегда запрашивать (по умолчанию)
«умный» — использовать вспомогательную LLM для одобрения низкорисковых команд, запрашивая для высокорисковых команд.
off — пропускать все запросы подтверждения (эквивалент --yolo)
hermesconfigsetapprovals.modesmart# рекомендуемая золотая середина
hermesconfigsetapprovals.modeoff# обходить всё (не рекомендуется)
Обход без изменений конфигурации для одного вызова:
- гермес --йоло...
- экспортировать HERMES_YOLO_MODE=1
Примечание: YOLO / approvals.mode: off НЕ отключает редактирование секретов. Они независимы.
Белый список хуков обработки
Руководители с хуками требуют дополнительного вмешательства в список некоторых перед внедрением. Управляется через ~/.hermes/shell-hooks-allowlist.json — запрашивается в интерактивном режиме при первом запуске хука.
Отключение инструментов web/browser/image-gen
Чтобы полностью изолировать модель от сетевых или медиа-инструментов, подключите hermestools и переключите для каждой платформы. Вступает в силу при следующей сессии (/reset). См. раздел «Инструменты и навыки» выше.
Голос и транскрипция
СТТ (голос → текст)
Голосовые сообщения от мессенджеров транскрибируются автоматически.
Запускайте дополнительные процессы 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 для интерактивного порождения:
Предпочитайте delegate_task для быстрых подзадач — меньше накладных расходов, чем порождение полного процесса
Используйте -w (режим worktree) при порождении агентов, которые редактируют код — предотвращает конфликты git
Устанавливайте таймауты для одноразового режима — сложные задачи могут занимать 5-10 минут
Используйте hermes chat -q для fire-and-forget — PTY не требуется
Используйте tmux для интерактивных сессий — сырой режим PTY имеет проблемы с \r vs \n в prompt_toolkit
Для запланированных задач используйте инструмент cronjob вместо порождения — он обрабатывает доставку и повторные попытки
Долговечные и фоновые системы
Четыре системы работают параллельно с основным циклом разговора. Краткий справочник
здесь; полные заметки разработчика находятся в AGENTS.md, пользовательская документация —
в website/docs/user-guide/features/.
Делегирование (delegate_task)
Синхронное порождение сабагента — родитель ждет сводки от дочернего агента,
прежде чем продолжить свой цикл. Изолированный контекст + сессия терминала.
Одиночный:delegate_task(goal, context, toolsets).
Пакетный:delegate_task(tasks=[{goal,...},...]) запускает дочерние агенты
параллельно, ограничено delegation.max_concurrent_children (по умолчанию 3).
Роли:leaf (по умолчанию; не может делегировать дальше) vs orchestrator
(может порождать своих воркеров, ограничено delegation.max_spawn_depth).
Не долговечен. Если родитель прерван, дочерний агент отменяется.
Для работы, которая должна пережить ход, используйте cronjob или
terminal(background=True, notify_on_complete=True).
Конфигурация: delegation.* в config.yaml.
Cron (запланированные задачи)
Долговечный планировщик — cron/jobs.py + cron/scheduler.py. Управляйте им через
инструмент cronjob, CLI hermes cron (list, add, edit,
pause, resume, run, remove) или слэш-команду /cron.
Расписания: длительность ("30m", "2h"), фраза "every"
("every monday 9am"), 5-польный cron ("0 9 * * *") или ISO-метка времени.
Настройки для каждой задачи:skills, переопределение model/provider, script
(сбор данных перед запуском; no_agent=True делает скрипт всей задачей),
context_from (цепочка вывода задачи A в задачу B), workdir
(запуск в конкретной директории с загруженными AGENTS.md / CLAUDE.md),
мультиплатформенная доставка.
Инварианты: 3-минутное жесткое прерывание на запуск, файл .tick.lock
предотвращает дублирование тиков между процессами, cron-сессии передают
skip_memory=True по умолчанию, и доставки cron обрамляются
заголовком/подвалом вместо зеркалирования в целевую сессию шлюза
(сохраняет чередование ролей).
Область: затрагивает только навыки с происхождением created_by: "agent".
Встроенные и установленные из хаба навыки недоступны. Никогда не удаляет —
максимальное деструктивное действие — архивация. Закрепленные навыки освобождены от
любых автоматических переходов и любых проходов ревью LLM.
Телеметрия: sidecar-файл ~/.hermes/skills/.usage.json хранит
для каждого навыка use_count, view_count, patch_count,
last_activity_at, state, pinned.
Долговечная SQLite-доска для мультипрофильной / мультиворкерной коллаборации.
Пользователи управляют ей через hermes kanban <verb>; воркеры, порожденные диспетчером,
видят сфокусированный набор инструментов kanban_*, ограниченный HERMES_KANBAN_TASK,
так что след в схеме равен нулю вне процессов воркеров.
Набор инструментов воркера:kanban_show, kanban_complete, kanban_block,
kanban_heartbeat, kanban_comment, kanban_create, kanban_link.
Диспетчер работает внутри шлюза по умолчанию
(kanban.dispatch_in_gateway: true) — возвращает устаревшие заявки,
продвигает готовые задачи, атомарно заявляет, запускает назначенные профили.
Автоматически блокирует задачу после ~5 последовательных неудачных запусков.
Изоляция: доска — жесткая граница (воркеры получают
HERMES_KANBAN_BOARD в окружении); tenant — мягкое пространство имен
внутри доски для изоляции пути рабочей области и ключа памяти.
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:
Используйте -n 0, а не -n 4 — addopts по умолчанию в 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.
Устранение неполадок
Голос не работает
Проверьте stt.enabled: true в config.yaml.
Проверьте провайдера: pip install fast-whisper или установите API-ключ.
В шлюзе: /restart. В CLI: откройте и перезапустите.
Инструмент недоступен
hermestools — проверьте, включен ли набор инструментов для вашей платформы.
Некоторые инструменты требуют применения окружения (проверьте .env)
/reset после включения инструментов
Проблемы с моделью/провайдером
hermes Doctor — проверьте конфигурацию и в зависимости от
Copilot 403: токены gh auth login НЕ работают для Copilot API. Вы должны использовать потоковый код устройства OAuth, специальный для Copilot, через hermes model → GitHub Copilot.
Изменения не вступают в силу
Инструменты/навыки:/reset запускает новую сессию с обновленным набором инструментов.
Изменения конфигурации: В шлюзе: /restart. В CLI: откройте и перезапустите.
Изменения кода: Перезапустите процесс CLI или шлюза.
Навыки не указаны
Список навыков Гермеса — проверьте, установлен ли
Конфигурация навыков Гермеса — проверьте включение для платформы.
Подтвердите явно: /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
Проблемы, специфичные для платформы
Бот Discord молчит: Необходимо включить Намерение содержимого сообщения в боте → Намерения привилегированного шлюза.
Бот Slack работает только в личных сообщениях: Необходимо подписаться на событие message.channels. Без этого бот блокирует публичные каналы.
Проблемы, специфичные для Windows (Alt+Enter новая строка, WinError 10106, конфиг с UTF-8 BOM, тестовый набор, окончания строки): см. Специальный раздел Особенности Windows выше.
Вспомогательные модели не работают
Если задачи вспомогательные (видение, сжатие, session_search) молча не работают, провайдер auto не может найти бэкенд. Установите либо OPENROUTER_API_KEY, либо GOOGLE_API_KEY, либо явно настроив провайдера для каждой вспомогательной задачи:
python-mpytesttests/-o'addopts='-q# Полный набор
python-mpytesttests/tools/-q# Конкретная область
Тесты автоматически перенаправляют HERMES_HOME во временные каталоги — никогда не трогают реальный ~/.hermes/
Запускайте полный набор перед отправкой любых изменений.
Используйте -o 'addopts=' для очистки любых встроенных флагов pytest.
Контрибьюторы в 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), затем запустите тесты напрямую:
Используйте -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. Патчите все три вместе:
См. tests/agent/test_prompt_builder.py::TestEnvironmentHints для рабочего примера.
Расширение блока окружения выполнение в системном режиме
Фактическая информация о хост-ОС, домашней директории пользователя, cwd, бэкенде терминала и оболочке (bash vs. PowerShell в Windows) выводится из agent/prompt_builder.py::build_environment_hints(). Здесь же находятся подсказка WSL и логика зондирования для каждого бэкенда. Соглашение:
Локальный бэкенд терминала → выводить информацию о хосте (ОС, $HOME, cwd) + заметки, специальные для Windows (имя хоста ≠ имя пользователя, терминал использует bash, а не PowerShell).
Удаленный бэкенд терминала (все в _REMOTE_TERMINAL_BACKENDS: docker, сингулярность, модальный, Daytona, ssh, vercel_sandbox, Managed_modal) → подавать информацию о хосте полностью и описывать только бэкенд. Живой зонд uname/whoami/pwd прогресс внутри бэкенда через tools.environments.get_environment(...).execute(...), кэшируется для каждого процесса в _BACKEND_PROBE_CACHE, со статическим запасным эффектом, если зонд показывает по таймауту.
Ключевой факт для написания промптов: когда TERMINAL_ENV!= "local", *каждый* файловый инструмент (read_file,write_file,patch,search_files`) работает внутри контейнера бэкенда, а не на хосте. Системный запрос никогда не должен описывать хост в этом случае — агент не может к нему обратиться.
Полные заметки по дизайну, точные выводные строки и подводные камни:
ссылки/prompt-builder-environment-hints.md.
Шаблон безопасности рефакторинга (защита POSIX-эквивалентности): когда вы извлекаете встроенную логику в хелпер, которая обеспечивает поведение, специфичное для Windows/плат, сохраняя функцию-оракул _legacy_<name> в тестовом файле, который является дословной копией исходного кода, затем параметризуйте-дифференциал против нее. Пример: tests/tools/test_code_execution_windows_env.py::TestPosixEquivalence. Это фиксирует инвариант, что поведение POSIX идентично побитно, и заставляет любой будущий дрейф громко проваливаться с четким диффом.
столкновение с коммитами
type:concisesubjectlineOptionalbody.
Типы: fix:, feat:, refactor:, docs:, chore:
Ключевые правила
Никогда не блокируйте кэширование промптов — не меняйте контекст, инструменты или системные подсказки в середине разговора.
Чередование ролей сообщений — никогда не должно быть двух сообщений ассистента или двух сообщений пользователя подряда
Используйте get_hermes_home() из hermes_constants для всех способов (безопасно для профиля)
Значения конфигурации идут в config.yaml, секреты — в .env
Новые инструменты необходимы в check_fn, чтобы они появлялись только при выполнении требований.