Инструменты планирования (Cron)
PRX предоставляет девять инструментов для автоматизации задач на основе времени, охватывающих традиционное управление cron-задачами и продвинутый движок планирования Xin. Эти инструменты позволяют агенту создавать запланированные задачи, просматривать историю выполнения, запускать ручные прогоны и оркестрировать фоновые операции по повторяющимся расписаниям.
Cron-инструменты разделены на две системы: подсистема cron для стандартных запланированных задач с использованием cron-выражений и движок Xin для продвинутого планирования задач с цепочками зависимостей, условным выполнением и интеграцией с конвейером самоэволюции.
Все cron-инструменты и инструменты планирования зарегистрированы в реестре all_tools() и доступны при запущенном демоне.
Конфигурация
Система Cron
[cron]
enabled = true
timezone = "UTC" # Часовой пояс для cron-выражений
# Определение встроенных запланированных задач
[[cron.tasks]]
name = "daily-report"
schedule = "0 9 * * *" # Каждый день в 09:00 UTC
action = "agent"
prompt = "Generate a daily summary report and send it to the user."
[[cron.tasks]]
name = "memory-cleanup"
schedule = "0 3 * * *" # Каждый день в 03:00 UTC
action = "agent"
prompt = "Run memory hygiene: archive old daily entries and compact core memories."
[[cron.tasks]]
name = "repo-check"
schedule = "*/30 * * * *" # Каждые 30 минут
action = "shell"
command = "cd /home/user/project && git fetch --all"Движок Xin
[xin]
enabled = true
interval_minutes = 5 # Интервал тика в минутах (минимум 1)
max_concurrent = 4 # Максимум одновременных выполнений задач за тик
max_tasks = 128 # Максимальное общее количество задач в хранилище
stale_timeout_minutes = 60 # Минут до пометки выполняемой задачи как устаревшей
builtin_tasks = true # Автоматическая регистрация встроенных системных задач
evolution_integration = false # Позволить Xin управлять расписанием эволюции/фитнесаСправочник инструментов
cron_add
Добавляет новую cron-задачу с cron-выражением, командой или промптом и опциональным описанием.
{
"name": "cron_add",
"arguments": {
"name": "backup-workspace",
"schedule": "0 2 * * *",
"action": "shell",
"command": "tar czf /tmp/workspace-$(date +%Y%m%d).tar.gz /home/user/workspace",
"description": "Daily workspace backup at 2 AM"
}
}| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
name | string | Да | -- | Уникальное имя cron-задачи |
schedule | string | Да | -- | Cron-выражение (5 полей: минута час день месяц день_недели) |
action | string | Да | -- | Тип действия: "shell" (выполнить команду) или "agent" (выполнить промпт агента) |
command | string | Условно | -- | Shell-команда (обязательна при action = "shell") |
prompt | string | Условно | -- | Промпт агента (обязателен при action = "agent") |
description | string | Нет | -- | Человекочитаемое описание |
cron_list
Выводит все зарегистрированные cron-задачи с их расписаниями, статусом и временем следующего запуска.
{
"name": "cron_list",
"arguments": {}
}Параметры не требуются. Возвращает таблицу всех cron-задач.
cron_remove
Удаляет cron-задачу по имени или ID.
{
"name": "cron_remove",
"arguments": {
"name": "backup-workspace"
}
}| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
name | string | Да | -- | Имя или ID cron-задачи для удаления |
cron_update
Обновляет расписание, команду или настройки существующей cron-задачи.
{
"name": "cron_update",
"arguments": {
"name": "backup-workspace",
"schedule": "0 4 * * *",
"description": "Daily workspace backup at 4 AM (shifted)"
}
}| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
name | string | Да | -- | Имя обновляемой cron-задачи |
schedule | string | Нет | -- | Новое cron-выражение |
command | string | Нет | -- | Новая shell-команда |
prompt | string | Нет | -- | Новый промпт агента |
description | string | Нет | -- | Новое описание |
cron_run
Ручной запуск cron-задачи немедленно, вне обычного расписания.
{
"name": "cron_run",
"arguments": {
"name": "daily-report"
}
}| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
name | string | Да | -- | Имя cron-задачи для запуска |
cron_runs
Просмотр истории выполнения и логов запусков cron-задач. Показывает прошлые выполнения с метками времени, статусом и выводом.
{
"name": "cron_runs",
"arguments": {
"name": "daily-report",
"limit": 10
}
}| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
name | string | Нет | -- | Фильтр по имени задачи. Если не указано, показываются все недавние запуски. |
limit | integer | Нет | 20 | Максимальное количество записей истории |
schedule
Планирует однократную или повторяющуюся задачу с помощью выражений времени на естественном языке. Более высокоуровневый интерфейс по сравнению с необработанными cron-выражениями.
{
"name": "schedule",
"arguments": {
"when": "in 30 minutes",
"action": "agent",
"prompt": "Check if the deployment completed and report the status."
}
}| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
when | string | Да | -- | Выражение времени на естественном языке (напр., "in 30 minutes", "tomorrow at 9am", "every Monday at 10:00") |
action | string | Да | -- | Тип действия: "shell" или "agent" |
command | string | Условно | -- | Shell-команда (для действия "shell") |
prompt | string | Условно | -- | Промпт агента (для действия "agent") |
cron (устаревший)
Устаревшая точка входа cron для обратной совместимости. Перенаправляет к соответствующему cron-инструменту на основе аргумента action.
{
"name": "cron",
"arguments": {
"action": "list"
}
}xin
Движок планирования Xin для продвинутой автоматизации задач с цепочками зависимостей и условным выполнением.
{
"name": "xin",
"arguments": {
"action": "status"
}
}| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
action | string | Да | -- | Действие: "status", "tasks", "run", "pause", "resume" |
Формат cron-выражений
PRX использует стандартные 5-полевые cron-выражения:
┌───────────── минута (0-59)
│ ┌───────────── час (0-23)
│ │ ┌───────────── день месяца (1-31)
│ │ │ ┌───────────── месяц (1-12)
│ │ │ │ ┌───────────── день недели (0-7, 0 и 7 = воскресенье)
│ │ │ │ │
* * * * *Примеры:
| Выражение | Описание |
|---|---|
0 9 * * * | Каждый день в 9:00 |
*/15 * * * * | Каждые 15 минут |
0 9 * * 1-5 | По будням в 9:00 |
0 0 1 * * | Первый день каждого месяца в полночь |
30 8,12,18 * * * | В 8:30, 12:30 и 18:30 ежедневно |
Движок Xin
Движок Xin -- это продвинутый планировщик задач, выходящий за рамки простого cron-таймирования:
- Цепочки зависимостей: Задачи могут зависеть от успешного завершения других задач
- Условное выполнение: Задачи выполняются только при выполнении указанных условий
- Встроенные задачи: Системные задачи обслуживания (heartbeat, гигиена памяти, ротация логов) автоматически регистрируются при
builtin_tasks = true - Интеграция с эволюцией: При
evolution_integration = trueXin управляет расписанием самоэволюции и проверок фитнеса - Обнаружение устаревших задач: Задачи, выполняющиеся дольше
stale_timeout_minutes, помечаются как устаревшие и могут быть очищены - Параллельное выполнение: Несколько задач могут выполняться одновременно, ограниченные
max_concurrent
Использование
Управление cron из CLI
# Список всех cron-задач
prx cron list
# Добавление новой cron-задачи
prx cron add --name "check-updates" --schedule "0 */6 * * *" --action agent --prompt "Check for package updates"
# Ручной запуск задачи
prx cron run daily-report
# Просмотр истории запусков
prx cron runs --name daily-report --limit 5
# Удаление задачи
prx cron remove check-updatesСтатус Xin
# Проверка статуса движка Xin
prx xin status
# Список всех задач Xin
prx xin tasksБезопасность
Песочница для shell-команд
Cron-задачи с action = "shell" выполняются через ту же песочницу, что и инструмент shell. Настроенный бэкенд песочницы (Landlock, Firejail, Bubblewrap, Docker) применяется к запланированным командам.
Безопасность промптов агента
Cron-задачи с action = "agent" порождают новую сессию агента с заданным промптом. Сессия агента наследует политики безопасности демона, ограничения инструментов и лимиты ресурсов.
Политика безопасности
Cron-инструменты управляются движком политик безопасности:
[security.tool_policy.groups]
automation = "allow"
[security.tool_policy.tools]
cron_add = "supervised" # Требовать одобрение для добавления новых задач
cron_remove = "supervised" # Требовать одобрение для удаления задач
cron_run = "allow" # Разрешить ручные запускиЖурнал аудита
Все cron-операции записываются в журнал аудита: создание, изменение, удаление задач, ручные запуски и результаты выполнения.
Ограничения ресурсов
Запланированные задачи используют общие лимиты ресурсов демона. Настройка max_concurrent в движке Xin предотвращает исчерпание ресурсов от слишком большого количества одновременных задач.
Связанные разделы
- Система Cron -- архитектура и встроенные задачи
- Cron Heartbeat -- мониторинг здоровья
- Задачи Cron -- встроенные задачи обслуживания
- Самоэволюция -- интеграция Xin с эволюцией
- Выполнение shell -- песочница для shell-задач cron
- Справочник конфигурации -- настройки
[cron]и[xin] - Обзор инструментов -- все инструменты и система реестра