sidebar_position: 12 title: "Cron Troubleshooting" description: "Diagnose and fix common Hermes cron issues — jobs not firing, delivery failures, skill loading errors, and performance problems" lang: ru


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

Если задание cron работает не так, как ожидалось, выполните эти проверки по порядку. Большинство проблем попадают в одну из четырех категорий: время, доставка, разрешения или загрузка навыков.


Вакансии не увольняются

Проверка 1. Убедитесь, что задание существует и активно

hermes cron list

Найдите задание и подтвердите, что его состояние — [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. Проверьте системные часы и часовой пояс.

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

date
hermes cron list   # Compare next_run times with local time

Сбои доставки

Проверка 1. Убедитесь, что цель доставки указана правильно.

Цели доставки чувствительны к регистру и требуют настройки правильной платформы. Неправильно настроенная цель молча отбрасывает ответ.

Цель Требуется
telegram TELEGRAM_BOT_TOKEN в ~/.hermes/.env
discord DISCORD_BOT_TOKEN в ~/.hermes/.env
slack SLACK_BOT_TOKEN в ~/.hermes/.env
whatsapp Настроен шлюз WhatsApp
signal Сигнальный шлюз настроен
matrix Настроен домашний сервер Matrix
email SMTP настроен в config.yaml
sms SMS-провайдер настроен
local Доступ для записи на ~/.hermes/cron/output/
origin Доставляет в чат, где было создано задание

Другие поддерживаемые платформы включают mattermost, homeassistant, dingtalk, feishu, wecom, weixin, bluebubbles, qqbot и webhook. Вы также можете настроить таргетинг на конкретный чат с помощью синтаксиса platform:chat_id (например, telegram:-1001234567890).

Если доставка не удалась, задание все равно выполняется — оно просто никуда не отправится. Проверьте hermes cron list на наличие обновленного поля last_error (если доступно).

Проверка 2: Проверьте использование [SILENT]

Если ваше задание cron не выдает никаких результатов или агент отвечает [SILENT], доставка подавляется. Это сделано специально для мониторинга заданий, но убедитесь, что ваше приглашение случайно не подавляет все.

Подсказка с надписью «ответить [SILENT], если ничего не изменилось» также будет молча поглощать непустые ответы. Проверьте свою условную логику.

Проверка 3. Разрешения для токена платформы

Каждому боту платформы обмена сообщениями требуются определенные разрешения для получения сообщений. Если доставка молча не удалась:

Проверка 4: перенос ответа

По умолчанию ответы cron заключаются в верхний и нижний колонтитулы (cron.wrap_response: true в config.yaml). Некоторые платформы или интеграции могут не справиться с этим. Чтобы отключить:

cron:
  wrap_response: false

Сбои при загрузке навыков

Проверка 1. Убедитесь, что навыки установлены.

hermes skills list

Навыки должны быть установлены до того, как их можно будет прикрепить к заданиям cron. Если навык отсутствует, сначала установите его с помощью hermes skills install <skill-name> или /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 загружается первым:

/cron add "0 9 * * *" "..." --skill context-skill --skill target-skill

В этом примере context-skill загружается раньше target-skill.


Ошибки и сбои заданий

Проверка 1. Просмотрите результаты последнего задания

Если задание было выполнено и завершилось неудачно, вы можете увидеть контекст ошибки в:

  1. Чат, куда доставляется задание (если доставка прошла успешно)
  2. ~/.hermes/logs/agent.log для сообщений планировщика (или errors.log для предупреждений)
  3. Метаданные last_run задания через hermes cron list.

Проверка 2. Типичные ошибки

"Нет такого файла или каталога" для скриптов Путь script должен быть абсолютным (или относительным к каталогу конфигурации Hermes). Проверьте:

ls ~/.hermes/scripts/your-script.py   # Must exist
hermes cron edit <job_id> --script ~/.hermes/scripts/your-script.py

"Навык не найден" при выполнении задания Навык должен быть установлен на машине, на которой работает планировщик. Если вы перемещаетесь между компьютерами, навыки не синхронизируются автоматически — переустановите их с помощью hermes skills install <skill-name>.

Задание выполняется, но ничего не дает Вероятно, проблема с целью доставки (см. «Ошибки доставки» выше) или молчаливо подавленный ответ ([SILENT]).

Задание зависает или истекает время Планировщик использует тайм-аут на основе бездействия (по умолчанию 600 с, настраивается через HERMES_CRON_TIMEOUT env var, 0 для неограниченного количества). Агент может работать до тех пор, пока он активно вызывает инструменты — таймер срабатывает только после длительного бездействия. Длительные задания должны использовать сценарии для сбора данных и предоставления только результата.

Проверка 3. Конфликт блокировок

Планировщик использует блокировку на основе файлов, чтобы предотвратить перекрытие тиков. Если запущены два экземпляра шлюза (или сеанс CLI конфликтует со шлюзом), задания могут задерживаться или пропускаться.

Уничтожьте повторяющиеся процессы шлюза:

ps aux | grep hermes
# Kill duplicate processes, keep only one

Проверка 4. Разрешения для файла jobs.json

Задания хранятся в ~/.hermes/cron/jobs.json. Если этот файл недоступен для чтения/записи вашим пользователем, планировщик автоматически выйдет из строя:

ls -la ~/.hermes/cron/jobs.json
chmod 600 ~/.hermes/cron/jobs.json   # Your user should own it

Проблемы с производительностью

Медленный запуск задания

Каждое задание cron создает новый сеанс AIAgent, который может включать аутентификацию поставщика и загрузку модели. Для графиков, чувствительных ко времени, добавьте время буфера (например, 0 8 * * * вместо 0 9 * * *).

Слишком много пересекающихся заданий

Планировщик выполняет задания последовательно в течение каждого тика. Если одновременно необходимо выполнить несколько заданий, они выполняются одно за другим. Рассмотрите возможность использования скользящих графиков (например, 0 9 * * * и 5 9 * * * вместо обоих 0 9 * * *), чтобы избежать задержек.

Большой вывод скрипта

Скрипты, которые выгружают мегабайты выходных данных, замедляют работу агента и могут привести к превышению лимита токенов. Фильтруйте/обобщайте на уровне сценария — выдавайте только то, о чем агенту нужно рассуждать.


Диагностические команды

hermes cron list                    # Show all jobs, states, next_run times
hermes cron run <job_id>            # Schedule for next tick (for testing)
hermes cron edit <job_id>           # Fix configuration issues
hermes logs                         # View recent Hermes logs
hermes skills list                  # Verify installed skills

Получение дополнительной помощи

Если вы прочитали это руководство, но проблема не устранена:

  1. Запустите задание с помощью hermes cron run <job_id> (срабатывает при следующем тике шлюза) и проверьте наличие ошибок в выводе чата.
  2. Проверьте ~/.hermes/logs/agent.log на наличие сообщений планировщика и ~/.hermes/logs/errors.log на наличие предупреждений.
  3. Откройте проблему на github.com/NousResearch/hermes-agent с помощью:
  4. Идентификатор задания и график
  5. Цель доставки
  6. То, что вы ожидали, и то, что произошло
  7. Соответствующие сообщения об ошибках из журналов.

Полный справочник по cron см. в разделах Автоматизация любых задач с помощью Cron и Запланированные задачи (Cron).