Устранение неполадок Cron
Если cron-задание ведёт себя не так, как ожидалось, выполняйте эти проверки по порядку. Большинство проблем относятся к одной из четырёх категорий: время, доставка, разрешения или загрузка навыков.
Задания не выполняются
Проверка 1: Убедитесь, что задание существует и активно
vibeos 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-задания автоматически.
Если вы ожидаете автоматического выполнения заданий, вам нужен работающий шлюз (vibeos gateway для переднего плана или vibeos gateway start для установленной службы). Для разовой отладки вы можете вручную вызвать тик с помощью vibeos cron tick.
Проверка 4: Проверьте системные часы и часовой пояс
Задания используют локальный часовой пояс. Если часы вашей машины неверны или находятся в другом часовом поясе, задания будут выполняться в неправильное время. Проверьте:
date
vibeos cron list # Сравните время next_run с локальным временем
Сбои доставки
Проверка 1: Убедитесь, что цель доставки указана правильно
Цели доставки чувствительны к регистру и требуют настройки соответствующей платформы. Неправильно настроенная цель молча отбрасывает ответ.
| Цель | Требуется |
|---|---|
telegram | TELEGRAM_BOT_TOKEN в ~/.vibeos/.env |
discord | DISCORD_BOT_TOKEN в ~/.vibeos/.env |
slack | SLACK_BOT_TOKEN в ~/.vibeos/.env |
whatsapp | Настроенный шлюз WhatsApp |
signal | Настроенный шлюз Signal |
matrix | Настроенный домашний сервер Matrix |
email | SMTP, настроенный в config.yaml |
sms | Настроенный SMS-провайдер |
local | Право на запись в ~/.vibeos/cron/output/ |
origin | Доставка в чат, где было создано задание |
Другие поддерживаемые платформы включают mattermost, homeassistant, dingtalk, feishu, wecom, weixin, bluebubbles, qqbot и webhook. Вы также можете указать конкретный чат с помощью синтаксиса platform:chat_id (например, telegram:-1001234567890).
Если доставка не удалась, задание всё равно выполняется — оно просто не будет отправлено никуда. Проверьте vibeos cron list на наличие обновлённого поля last_error (если доступно).
Проверка 2: Проверьте использование [SILENT]
Если ваше cron-задание не выводит результат, доставка подавляется. Если ответ агента содержит маркер тишины cron [SILENT], доставка также подавляется. Это предусмотрено для мониторинговых заданий — но убедитесь, что ваш промпт случайно не подавляет всё.
Используйте промпты вроде «ответь только [SILENT], если ничего не изменилось». Избегайте просьб к агенту включать [SILENT] в длинное объяснение, так как cron воспринимает этот маркер как сигнал подавления.
Проверка 3: Разрешения токенов платформы
Каждому боту платформы обмена сообщениями требуются определённые разрешения для получения сообщений. Если доставка молча не удаётся:
- Telegram: Бот должен быть администратором в целевой группе/канале
- Discord: Бот должен иметь разрешение на отправку в целевой канал
- Slack: Бот должен быть добавлен в рабочее пространство и иметь область
chat:write
Проверка 4: Оборачивание ответа
По умолчанию ответы cron оборачиваются заголовком и нижним колонтитулом (cron.wrap_response: true в config.yaml). Некоторые платформы или интеграции могут плохо это обрабатывать. Чтобы отключить:
cron:
wrap_response: false
Сбои загрузки навыков
Проверка 1: Убедитесь, что навыки установлены
vibeos skills list
Навыки должны быть установлены, прежде чем их можно будет прикрепить к cron-заданиям. Если навык отсутствует, сначала установите его с помощью vibeos skills install <skill-name> или через /skills в CLI.
Проверка 2: Проверьте имя навыка и имя папки навыка
Имена навыков чувствительны к регистру и должны совпадать с именем папки установленного навыка. Если ваше задание указывает ai-funding-daily-report, но папка навыка — ai-funding-daily-report, уточните точное имя из vibeos 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: Просмотрите недавний вывод задания
Если задание выполнилось и завершилось ошибкой, вы можете увидеть контекст ошибки в:
- Чате, куда доставляется задание (если доставка прошла успешно)
~/.vibeos/logs/agent.logдля сообщений планировщика (илиerrors.logдля предупреждений)- Метаданных
last_runзадания черезvibeos cron list
Проверка 2: Типичные шаблоны ошибок
«No such file or directory» для скриптов
Путь к script должен быть абсолютным (или относительным к каталогу конфигурации VibeOS). Проверьте:
ls ~/.vibeos/scripts/your-script.py # Должен существовать
vibeos cron edit <job_id> --script ~/.vibeos/scripts/your-script.py
«Skill not found» при выполнении задания
Навык должен быть установлен на машине, запускающей планировщик. Если вы перемещаетесь между машинами, навыки не синхронизируются автоматически — переустановите их с помощью vibeos skills install <skill-name>.
Задание выполняется, но ничего не доставляет
Вероятно, проблема с целью доставки (см. «Сбои доставки» выше), отсутствие вывода или ответ, содержащий маркер тишины cron [SILENT].
Задание зависает или истекает по времени
Планировщик использует тайм-аут на основе бездействия (по умолчанию 600 с, настраивается через переменную окружения VIBEOS_CRON_TIMEOUT, 0 для бесконечности). Агент может работать, пока активно вызывает инструменты — таймер срабатывает только после продолжительного бездействия. Долго выполняющиеся задания должны использовать скрипты для сбора данных и доставлять только результат.
Проверка 3: Конкуренция блокировок
Планировщик использует файловую блокировку для предотвращения перекрывающихся тиков. Если запущены два экземпляра шлюза (или сеанс CLI конфликтует со шлюзом), задания могут задерживаться или пропускаться.
Убейте дублирующиеся процессы шлюза:
ps aux | grep vibeos
# Убейте дублирующиеся процессы, оставьте только один
Проверка 4: Разрешения на jobs.json
Задания хранятся в ~/.vibeos/cron/jobs.json. Если этот файл не читается/не записывается вашим пользователем, планировщик молча завершится ошибкой:
ls -la ~/.vibeos/cron/jobs.json
chmod 600 ~/.vibeos/cron/jobs.json # Ваш пользователь должен быть владельцем
Проблемы с производительностью
Медленный запуск задания
Каждое cron-задание создаёт новый сеанс AIAgent, который может включать аутентификацию провайдера и загрузку модели. Для чувствительных ко времени расписаний добавьте буферное время (например, 0 8 * * * вместо 0 9 * * *).
Слишком много перекрывающихся заданий
Планировщик выполняет задания последовательно в рамках каждого тика. Если несколько заданий должны выполниться в одно и то же время, они выполняются одно за другим. Рассмотрите возможность разнесения расписаний (например, 0 9 * * * и 5 9 * * * вместо обоих в 0 9 * * *), чтобы избежать задержек.
Большой вывод скрипта
Скрипты, выводящие мегабайты данных, замедлят работу агента и могут достичь лимитов токенов. Фильтруйте/суммируйте на уровне скрипта — выводите только то, что нужно агенту для анализа.
Диагностические команды
vibeos cron list # Показать все задания, состояния, время next_run
vibeos cron run <job_id> # Запланировать на следующий тик (для тестирования)
vibeos cron edit <job_id> # Исправить проблемы конфигурации
vibeos logs # Просмотреть последние логи VibeOS
vibeos skills list # Проверить установленные навыки
Получение дополнительной помощи
Если вы прошли это руководство, а проблема остаётся:
- Запустите задание с помощью
vibeos cron run <job_id>(выполняется при следующем тике шлюза) и следите за ошибками в выводе чата - Проверьте
~/.vibeos/logs/agent.logна наличие сообщений планировщика и~/.vibeos/logs/errors.logна наличие предупреждений - Откройте issue на
github.com/Linx72/VibeOS, указав:- ID задания и расписание
- Цель доставки
- Что вы ожидали и что произошло
- Соответствующие сообщения об ошибках из логов
Полную справку по cron см. в разделах Автоматизация всего с помощью Cron и Запланированные задачи (Cron).