Устранение неполадок Cron
Если задание cron работает не так, как ожидалось, выполните эти проверки по порядку. Большинство проблем попадают в одну из четырех категорий: время, доставка, разрешения или загрузка навыков.
Вакансии не увольняются
Проверка 1. Убедитесь, что задание существует и активно
hermes cron list
Найдите задание и убедитесь, что его состояние — «[активно]» (а не «[приостановлено]» или «[завершено]»). Если отображается [завершено], возможно, счетчик повторений исчерпан — отредактируйте задание, чтобы сбросить его.
Проверка 2. Убедитесь, что расписание правильное.
Неверно отформатированный график по умолчанию автоматически устанавливается на одноразовый или полностью отклоняется. Проверьте свое выражение:
| Ваше выражение | Должен оценить |
|---|---|
0 9 * * * |
9:00 каждый день |
0 9 * * 1 |
9:00 каждый понедельник |
каждые 2 часа |
Каждые 2 часа |
30м |
через 30 минут |
2025-06-01T09:00:00 |
1 июня 2025 г., 9:00 UTC |
Если задание запускается один раз, а затем исчезает из списка, это одноразовое расписание («30m», «1d» или временная метка ISO) — ожидаемое поведение.
Проверка 3. Работает ли шлюз?
Задания Cron запускаются фоновым тикером шлюза, который тикает каждые 60 секунд. Обычный сеанс чата CLI не автоматически запускает задания cron.
Если вы ожидаете, что задания будут запускаться автоматически, вам нужен работающий шлюз («шлюз Гермеса» для переднего плана или «запуск шлюза Гермеса» для установленной службы). Для единоразовой отладки вы можете вручную запустить галочку с помощью «hermes cron tick».
Проверка 4. Проверьте системные часы и часовой пояс.
Джобс использует местный часовой пояс. Если часы вашего компьютера идут неправильно или находятся в другом часовом поясе, чем ожидалось, задания будут запускаться в неправильное время. Проверять:
date
hermes cron list # Compare next_run times with local time
Сбои доставки
Проверка 1. Убедитесь, что цель доставки указана правильно.
Цели доставки чувствительны к регистру и требуют настройки правильной платформы. Неправильно настроенная цель молча отбрасывает ответ.
| Цель | Требуется |
|---|---|
телеграмма |
TELEGRAM_BOT_TOKEN в ~/.hermes/.env |
раздор |
DISCORD_BOT_TOKEN в ~/.hermes/.env |
слаба |
SLACK_BOT_TOKEN в ~/.hermes/.env |
WhatsApp |
Настроен шлюз WhatsApp |
сигнал |
Сигнальный шлюз настроен |
матрица |
Настроен домашний сервер Matrix |
электронная почта |
SMTP настроен в config.yaml |
смс |
SMS-провайдер настроен |
местный |
Доступ на запись к ~/.hermes/cron/output/ |
происхождение |
Доставляет в чат, где было создано задание |
Другие поддерживаемые платформы включают «mattermost», «homeassistant», «dingtalk», «feishu», «wecom», «weixin», «bluebubbles», «qqbot» и «webhook». Вы также можете настроить таргетинг на конкретный чат с помощью синтаксиса «platform:chat_id» (например, «telegram:-1001234567890»).
Если доставка не удалась, задание все равно выполняется — оно просто никуда не отправится. Проверьте hermes cron list на наличие обновленного поля last_error (если доступно).
Проверка 2. Проверьте использование [SILENT]
Если ваше задание cron не выдает никаких результатов, доставка подавляется. Если ответ агента включает маркер молчания cron [SILENT], доставка также подавляется. Это предназначено для мониторинга заданий, но убедитесь, что ваше приглашение случайно не подавляет все.
Используйте подсказки типа «отвечайте только [ТИХО], если ничего не изменилось». Не просите агента включить «[SILENT]» в более длинное объяснение, поскольку cron рассматривает этот маркер как сигнал подавления.
Проверка 3. Разрешения для токена платформы
Каждому боту платформы обмена сообщениями требуются определенные разрешения для получения сообщений. Если доставка молча не удалась:
- Telegram: бот должен быть администратором целевой группы/канала.
- Discord: у бота должно быть разрешение на отправку в целевой канал.
- Slack: бот должен быть добавлен в рабочую область и иметь область действия «chat:write».
Проверка 4: перенос ответа
По умолчанию ответы cron оборачиваются верхним и нижним колонтитулом («cron.wrap_response: true» в «config.yaml»). Некоторые платформы или интеграции могут не справиться с этим. Чтобы отключить:
cron:
wrap_response: false
Сбои при загрузке навыков
Проверка 1. Убедитесь, что навыки установлены.
hermes skills list
Навыки должны быть установлены до того, как их можно будет прикрепить к заданиям cron. Если какой-либо навык отсутствует, сначала установите его с помощью hermesskills install <skill-name> или через /skills в CLI.
Проверка 2. Проверьте имя навыка и имя папки навыка.
Имена навыков чувствительны к регистру и должны соответствовать имени папки установленного навыка. Если в вашей должности указано «ai-funding-report», но папка навыков — «ai-funding-daily-report», подтвердите точное имя из «списка навыков Hermes».
Проверка 3: Навыки, требующие интерактивных инструментов
Задания Cron выполняются с отключенными наборами инструментов cronjob, message и clarify. Это предотвращает рекурсивное создание cron, прямую отправку сообщений (доставка осуществляется планировщиком) и интерактивные подсказки. Если навык зависит от этих наборов инструментов, он не будет работать в контексте cron.
Проверьте документацию навыка, чтобы убедиться, что он работает в неинтерактивном (безголовом) режиме.
Проверка 4. Упорядочение нескольких навыков
При использовании нескольких навыков они загружаются по порядку. Если навык A зависит от контекста навыка B, убедитесь, что B загружается первым:
/cron add "0 9 * * *" "..." --skill context-skill --skill target-skill
В этом примере «context-skill» загружается перед «target-skill».
Ошибки и сбои заданий
Проверка 1. Просмотрите результаты последнего задания
Если задание было выполнено и завершилось неудачно, вы можете увидеть контекст ошибки в:
- Чат, куда доставляется задание (если доставка прошла успешно)
~/.hermes/logs/agent.logдля сообщений планировщика (илиerrors.logдля предупреждений)- Метаданные задания «last_run» через «список Hermes Cron».
Проверка 2. Типичные ошибки
"Нет такого файла или каталога" для скриптов
Путь script должен быть абсолютным (или относительным к каталогу конфигурации Hermes). Проверять:
ls ~/.hermes/scripts/your-script.py # Must exist
hermes cron edit <job_id> --script ~/.hermes/scripts/your-script.py
"Навык не найден" при выполнении задания
Навык должен быть установлен на машине, на которой работает планировщик. Если вы перемещаетесь между компьютерами, навыки не синхронизируются автоматически — переустановите их с помощью hermesskills install <skill-name>.
Задание выполняется, но ничего не дает
Вероятна проблема с целью доставки (см. выше «Ошибки доставки»), отсутствие вывода или ответ, содержащий маркер молчания cron [SILENT].
Задание зависает или истекает время
Планировщик использует тайм-аут на основе бездействия (по умолчанию 600 с, настраивается через переменную окружения HERMES_CRON_TIMEOUT, 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
Получение дополнительной помощи
Если вы прочитали это руководство, но проблема не устранена:
- Запустите задание с помощью
hermes cron run <job_id>(срабатывает при следующем тике шлюза) и проверьте наличие ошибок в выводе чата. - Проверьте
~/.hermes/logs/agent.logна наличие сообщений планировщика и~/.hermes/logs/errors.logна предмет предупреждений. - Откройте проблему на github.com/NousResearch/hermes-agent с помощью:
- Идентификатор задания и график
- Цель доставки
- То, что вы ожидали, и то, что произошло
- Соответствующие сообщения об ошибках из журналов.
Полную информацию о cron см. в разделах Автоматизация любых задач с помощью Cron и Запланированные задачи (Cron).