Skip to content
Эта страница создана и переведена с помощью ИИ. Если вы заметили неточности, помогите нам улучшить её. Редактировать на GitHub

Инструменты планирования (Cron)

PRX предоставляет девять инструментов для автоматизации задач на основе времени, охватывающих традиционное управление cron-задачами и продвинутый движок планирования Xin. Эти инструменты позволяют агенту создавать запланированные задачи, просматривать историю выполнения, запускать ручные прогоны и оркестрировать фоновые операции по повторяющимся расписаниям.

Cron-инструменты разделены на две системы: подсистема cron для стандартных запланированных задач с использованием cron-выражений и движок Xin для продвинутого планирования задач с цепочками зависимостей, условным выполнением и интеграцией с конвейером самоэволюции.

Все cron-инструменты и инструменты планирования зарегистрированы в реестре all_tools() и доступны при запущенном демоне.

Конфигурация

Система Cron

toml
[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

toml
[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-выражением, командой или промптом и опциональным описанием.

json
{
  "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"
  }
}
ПараметрТипОбязательныйПо умолчаниюОписание
namestringДа--Уникальное имя cron-задачи
schedulestringДа--Cron-выражение (5 полей: минута час день месяц день_недели)
actionstringДа--Тип действия: "shell" (выполнить команду) или "agent" (выполнить промпт агента)
commandstringУсловно--Shell-команда (обязательна при action = "shell")
promptstringУсловно--Промпт агента (обязателен при action = "agent")
descriptionstringНет--Человекочитаемое описание

cron_list

Выводит все зарегистрированные cron-задачи с их расписаниями, статусом и временем следующего запуска.

json
{
  "name": "cron_list",
  "arguments": {}
}

Параметры не требуются. Возвращает таблицу всех cron-задач.

cron_remove

Удаляет cron-задачу по имени или ID.

json
{
  "name": "cron_remove",
  "arguments": {
    "name": "backup-workspace"
  }
}
ПараметрТипОбязательныйПо умолчаниюОписание
namestringДа--Имя или ID cron-задачи для удаления

cron_update

Обновляет расписание, команду или настройки существующей cron-задачи.

json
{
  "name": "cron_update",
  "arguments": {
    "name": "backup-workspace",
    "schedule": "0 4 * * *",
    "description": "Daily workspace backup at 4 AM (shifted)"
  }
}
ПараметрТипОбязательныйПо умолчаниюОписание
namestringДа--Имя обновляемой cron-задачи
schedulestringНет--Новое cron-выражение
commandstringНет--Новая shell-команда
promptstringНет--Новый промпт агента
descriptionstringНет--Новое описание

cron_run

Ручной запуск cron-задачи немедленно, вне обычного расписания.

json
{
  "name": "cron_run",
  "arguments": {
    "name": "daily-report"
  }
}
ПараметрТипОбязательныйПо умолчаниюОписание
namestringДа--Имя cron-задачи для запуска

cron_runs

Просмотр истории выполнения и логов запусков cron-задач. Показывает прошлые выполнения с метками времени, статусом и выводом.

json
{
  "name": "cron_runs",
  "arguments": {
    "name": "daily-report",
    "limit": 10
  }
}
ПараметрТипОбязательныйПо умолчаниюОписание
namestringНет--Фильтр по имени задачи. Если не указано, показываются все недавние запуски.
limitintegerНет20Максимальное количество записей истории

schedule

Планирует однократную или повторяющуюся задачу с помощью выражений времени на естественном языке. Более высокоуровневый интерфейс по сравнению с необработанными cron-выражениями.

json
{
  "name": "schedule",
  "arguments": {
    "when": "in 30 minutes",
    "action": "agent",
    "prompt": "Check if the deployment completed and report the status."
  }
}
ПараметрТипОбязательныйПо умолчаниюОписание
whenstringДа--Выражение времени на естественном языке (напр., "in 30 minutes", "tomorrow at 9am", "every Monday at 10:00")
actionstringДа--Тип действия: "shell" или "agent"
commandstringУсловно--Shell-команда (для действия "shell")
promptstringУсловно--Промпт агента (для действия "agent")

cron (устаревший)

Устаревшая точка входа cron для обратной совместимости. Перенаправляет к соответствующему cron-инструменту на основе аргумента action.

json
{
  "name": "cron",
  "arguments": {
    "action": "list"
  }
}

xin

Движок планирования Xin для продвинутой автоматизации задач с цепочками зависимостей и условным выполнением.

json
{
  "name": "xin",
  "arguments": {
    "action": "status"
  }
}
ПараметрТипОбязательныйПо умолчаниюОписание
actionstringДа--Действие: "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 = true Xin управляет расписанием самоэволюции и проверок фитнеса
  • Обнаружение устаревших задач: Задачи, выполняющиеся дольше stale_timeout_minutes, помечаются как устаревшие и могут быть очищены
  • Параллельное выполнение: Несколько задач могут выполняться одновременно, ограниченные max_concurrent

Использование

Управление cron из CLI

bash
# Список всех 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

bash
# Проверка статуса движка Xin
prx xin status

# Список всех задач Xin
prx xin tasks

Безопасность

Песочница для shell-команд

Cron-задачи с action = "shell" выполняются через ту же песочницу, что и инструмент shell. Настроенный бэкенд песочницы (Landlock, Firejail, Bubblewrap, Docker) применяется к запланированным командам.

Безопасность промптов агента

Cron-задачи с action = "agent" порождают новую сессию агента с заданным промптом. Сессия агента наследует политики безопасности демона, ограничения инструментов и лимиты ресурсов.

Политика безопасности

Cron-инструменты управляются движком политик безопасности:

toml
[security.tool_policy.groups]
automation = "allow"

[security.tool_policy.tools]
cron_add = "supervised"    # Требовать одобрение для добавления новых задач
cron_remove = "supervised" # Требовать одобрение для удаления задач
cron_run = "allow"         # Разрешить ручные запуски

Журнал аудита

Все cron-операции записываются в журнал аудита: создание, изменение, удаление задач, ручные запуски и результаты выполнения.

Ограничения ресурсов

Запланированные задачи используют общие лимиты ресурсов демона. Настройка max_concurrent в движке Xin предотвращает исчерпание ресурсов от слишком большого количества одновременных задач.

Связанные разделы

Released under the Apache-2.0 License.