Troubleshooting
На этой странице
Когда cron-задание ведёт себя не так, как ожидалось, выполните эти проверки по порядку. Большинство проблем относятся к одной из четырёх категорий: время выполнения, доставка, разрешения или загрузка навыков.
Задания не запускаются¶
Проверка 1: Убедитесь, что задание существует и активно¶
Найдите задание и убедитесь, что его статус — [active] (не [paused] и не [completed]). Если отображается [completed], возможно, исчерпан лимит повторов — отредактируйте задание, чтобы сбросить его.
Проверка 2: Подтвердите правильность расписания¶
Неправильно отформатированное расписание по умолчанию выполняется как одноразовое или отклоняется полностью. Проверьте ваше выражение:
| Ваше выражение | Должно выполняться |
|---|---|
0 9 * * * |
Каждый день в 9:00 |
0 9 * * 1 |
Каждый понедельник в 9:00 |
every 2h |
Каждые 2 часа от текущего момента |
30m |
Через 30 минут от текущего момента |
2025-06-01T09:00:00 |
1 июня 2025 года в 9:00 UTC |
Если задание выполняется один раз и затем исчезает из списка, это одноразовое расписание (30m, 1d или ISO-метка времени) — ожидаемое поведение.
Проверка 3: Запущен ли шлюз?¶
Cron-задания запускаются фоновым потоком тикера шлюза, который срабатывает каждые 60 секунд. Обычная сессия CLI-чата не запускает cron-задания автоматически.
Если вы ожидаете, что задания будут запускаться автоматически, вам нужен работающий шлюз (hermes gateway или hermes serve). Для разовой отладки вы можете вручную вызвать тик с помощью hermes cron tick.
Проверка 4: Проверьте системные часы и часовой пояс¶
Задания используют локальный часовой пояс. Если часы вашей машины неверны или находятся в другом часовом поясе, задания будут запускаться в неправильное время. Проверьте:
Сбои доставки¶
Проверка 1: Убедитесь, что цель доставки указана верно¶
Цели доставки чувствительны к регистру и требуют правильной настройки платформы. Неправильно настроенная цель молча отбрасывает ответ.
| Цель | Требуется |
|---|---|
telegram |
TELEGRAM_BOT_TOKEN в ~/.hermes/.env |
discord |
DISCORD_BOT_TOKEN в ~/.hermes/.env |
slack |
SLACK_BOT_TOKEN в ~/.hermes/.env |
whatsapp |
Настроенный шлюз WhatsApp |
signal |
Настроенный шлюз Signal |
matrix |
Настроенный домашний сервер Matrix |
email |
Настроенный SMTP в config.yaml |
sms |
Настроенный SMS-провайдер |
local |
Право записи в ~/.hermes/cron/output/ |
origin |
Доставка в чат, где было создано задание |
Другие поддерживаемые платформы включают mattermost, homeassistant, dingtalk, feishu, wecom, weixin, bluebubbles, qqbot и webhook. Вы также можете указать конкретный чат с помощью синтаксиса платформа:ид_чата (например, telegram:-1001234567890).
Если доставка не удалась, задание всё равно выполняется — оно просто не отправляет результат никуда. Проверьте hermes cron list на наличие обновлённого поля last_error (если доступно).
Проверка 2: Проверьте использование [SILENT]¶
Если ваше cron-задание не выдаёт вывода или агент отвечает [SILENT], доставка подавляется. Это предусмотрено для мониторинговых заданий — но убедитесь, что ваш промпт случайно не подавляет всё подряд.
Промпт, который говорит «ответь [SILENT], если ничего не изменилось», также будет молча проглатывать непустые ответы. Проверьте вашу условную логику.
Проверка 3: Разрешения токенов платформы¶
Каждому боту платформы обмена сообщениями требуются определённые разрешения для получения сообщений. Если доставка молча не срабатывает:
- Telegram: Бот должен быть администратором в целевой группе/канале
- Discord: Бот должен иметь разрешение на отправку в целевой канал
- Slack: Бот должен быть добавлен в рабочее пространство и иметь область
chat:write
Проверка 4: Оборачивание ответа¶
По умолчанию ответы cron оборачиваются заголовком и подвалом (cron.wrap_response: true в config.yaml). Некоторые платформы или интеграции могут неправильно это обрабатывать. Чтобы отключить:
Сбои загрузки навыков¶
Проверка 1: Убедитесь, что навыки установлены¶
Навыки должны быть установлены до того, как их можно будет прикрепить к cron-заданиям. Если навык отсутствует, установите его сначала с помощью hermes skills install <имя-навыка> или через /skills в CLI.
Проверка 2: Проверьте имя навыка и имя папки навыка¶
Имена навыков чувствительны к регистру и должны соответствовать имени папки установленного навыка. Если ваше задание указывает ai-funding-daily-report, но папка навыка — ai-funding-daily-report, уточните точное имя из hermes skills list.
Проверка 3: Навыки, требующие интерактивных инструментов¶
Cron-задания выполняются с отключёнными наборами инструментов cronjob, messaging и clarify. Это предотвращает рекурсивное создание cron-заданий, прямую отправку сообщений (доставка обрабатывается планировщиком) и интерактивные запросы. Если навык полагается на эти наборы инструментов, он не будет работать в контексте cron.
Проверьте документацию навыка, чтобы убедиться, что он работает в неинтерактивном (безголовом) режиме.
Проверка 4: Порядок нескольких навыков¶
При использовании нескольких навыков они загружаются по порядку. Если Навык A зависит от контекста Навыка B, убедитесь, что B загружается первым:
В этом примере context-skill загружается перед target-skill.
Ошибки и сбои заданий¶
Проверка 1: Просмотрите недавний вывод задания¶
Если задание запустилось и завершилось с ошибкой, вы можете найти контекст ошибки в:
- Чате, куда доставляется задание (если доставка прошла успешно)
~/.hermes/logs/agent.logдля сообщений планировщика (илиerrors.logдля предупреждений)- Метаданных
last_runзадания черезhermes cron list
Проверка 2: Типичные шаблоны ошибок¶
«No such file or directory» для скриптов Путь к script должен быть абсолютным (или относительным относительно каталога конфигурации Hermes). Проверьте:
ls ~/.hermes/scripts/your-script.py # Должен существовать
hermes cron edit <job_id> --script ~/.hermes/scripts/your-script.py
«Skill not found» при выполнении задания Навык должен быть установлен на машине, где запущен планировщик. Если вы переключаетесь между машинами, навыки не синхронизируются автоматически — переустановите их с помощью hermes skills install <имя-навыка>.
Задание запускается, но ничего не доставляет Вероятно, проблема с целью доставки (см. «Сбои доставки» выше) или молча подавленный ответ ([SILENT]).
Задание зависает или истекает по тайм-ауту Планировщик использует тайм-аут на основе бездействия (по умолчанию 600 с, настраивается через переменную окружения HERMES_CRON_TIMEOUT, 0 — без ограничения). Агент может работать столько, сколько активно вызывает инструменты — таймер срабатывает только после продолжительного бездействия. Долгие задания должны использовать скрипты для сбора данных и доставлять только результат.
Проверка 3: Конкуренция блокировок¶
Планировщик использует файловую блокировку для предотвращения перекрывающихся тиков. Если запущено два экземпляра шлюза (или сессия CLI конфликтует со шлюзом), задания могут задерживаться или пропускаться.
Завершите дублирующиеся процессы шлюза:
Проверка 4: Разрешения на jobs.json¶
Задания хранятся в ~/.hermes/cron/jobs.json. Если этот файл не читается/не записывается вашим пользователем, планировщик молча выйдет из строя:
ls -la ~/.hermes/cron/jobs.json
chmod 600 ~/.hermes/cron/jobs.json # Ваш пользователь должен быть владельцем
Проблемы производительности¶
Медленный запуск задания¶
Каждое cron-задание создаёт новый сеанс AIAgent, что может включать аутентификацию провайдера и загрузку модели. Для чувствительных ко времени расписаний добавьте буферное время (например, 0 8 * * * вместо 0 9 * * *).
Слишком много перекрывающихся заданий¶
Планировщик выполняет задания последовательно в рамках каждого тика. Если несколько заданий должны выполниться в одно и то же время, они запускаются одно за другим. Рассмотрите возможность разнесения расписаний (например, 0 9 * * * и 5 9 * * * вместо обоих в 0 9 * * *), чтобы избежать задержек.
Большой вывод скрипта¶
Скрипты, которые выводят мегабайты данных, замедляют работу агента и могут достичь лимитов токенов. Фильтруйте/суммируйте на уровне скрипта — выводите только то, что необходимо агенту для анализа.
Диагностические команды¶
hermes cron list # Показать все задания, состояния, время next_run
hermes cron run <job_id> # Запланировать на следующий тик (для тестирования)
hermes cron edit <job_id> # Исправить проблемы конфигурации
hermes logs # Просмотреть последние логи Hermes
hermes skills list # Проверить установленные навыки
Получение дополнительной помощи¶
Если вы прошли это руководство, но проблема остаётся:
- Запустите задание с помощью
hermes cron run <job_id>(запускается при следующем тике шлюза) и следите за ошибками в выводе чата - Проверьте
~/.hermes/logs/agent.logна сообщения планировщика и~/.hermes/logs/errors.logна предупреждения - Откройте issue на github.com/NousResearch/hermes-agent с:
- ID задания и расписанием
- Целью доставки
- Ожидаемым и фактическим результатом
- Соответствующими сообщениями об ошибках из логов
Полную информацию о cron см. в разделах Автоматизация всего с помощью Cron и Планировщик задач (Cron).
- Задания не запускаются
- Проверка 1: Убедитесь, что задание существует и активно
- Проверка 2: Подтвердите правильность расписания
- Проверка 3: Запущен ли шлюз?
- Проверка 4: Проверьте системные часы и часовой пояс
- Сбои доставки
- Проверка 1: Убедитесь, что цель доставки указана верно
- Проверка 2: Проверьте использование
[SILENT] - Проверка 3: Разрешения токенов платформы
- Проверка 4: Оборачивание ответа
- Сбои загрузки навыков
- Проверка 1: Убедитесь, что навыки установлены
- Проверка 2: Проверьте имя навыка и имя папки навыка
- Проверка 3: Навыки, требующие интерактивных инструментов
- Проверка 4: Порядок нескольких навыков
- Ошибки и сбои заданий
- Проверка 1: Просмотрите недавний вывод задания
- Проверка 2: Типичные шаблоны ошибок
- Проверка 3: Конкуренция блокировок
- Проверка 4: Разрешения на jobs.json
- Проблемы производительности
- Медленный запуск задания
- Слишком много перекрывающихся заданий
- Большой вывод скрипта
- Диагностические команды
- Получение дополнительной помощи