Amiga
Оглавление курса · урок 9 из 14

Модуль 2 · CI/CD · урок 9 из 14

Задачи по расписанию

Часть работы повторяется по календарю: утренняя сводка изменений, еженедельная проверка зависимостей, разбор ночных ошибок. Для этого у Codex есть scheduled tasks — задачи по расписанию (раньше функция называлась Automations). А там, где нужен сервер, а не ваш ноутбук, работает расписание пайплайнов GitLab с codex exec. Разберём оба варианта и правила, без которых фоновая задача превращается в фоновую проблему.

Где живут scheduled tasks

Создаются и управляются задачи только в двух местах: в десктопном приложении ChatGPT (в режиме Codex или ChatGPT Work) и на вебе. Codex CLI и расширение для IDE интерфейса управления расписанием не дают. Документация советует использовать их, чтобы подготовить и проверить промпт, навык или скрипт.

Десктопное приложение. Задача работает с локальным проектом: в каталоге проекта или в изолированном worktree. Компьютер должен быть включён, приложение запущено, проект — на месте на диске. Все задачи и их запуски собраны в разделе Scheduled в боковой панели. Это своего рода входящие: запуски с находками появляются там с отметкой о непрочитанном.

Веб. Задачи создаются из чата или ChatGPT Work и могут использовать загруженные файлы, подключённые инструменты, навыки и плагины. Работать в папке на вашем компьютере такие задачи не могут, и локального worktree между запусками у них нет.

Для администраторов рабочих пространств есть Team Tasks — общие задачи команды, которые работают в облаке через сервисный аккаунт команды. Ссылка на их настройку есть на странице о scheduled tasks.

Два вида задач

  • Отдельная задача (standalone) — каждый запуск начинает новый чат с сохранённым промптом, а результат появляется в Scheduled. Подходит, когда запуски независимы или одна задача обходит несколько проектов.
  • Задача внутри чата — возвращается в существующий чат с его контекстом. Подходит для наблюдения за долгой операцией, цикла ревью или продолжения разбора. Такие задачи могут идти с интервалом в минуты.

Для нестандартного расписания можно отредактировать правило повторения в формате RFC 5545 (RRULE), например RRULE:FREQ=MONTHLY;BYMONTHDAY=1;BYHOUR=9;BYMINUTE=0.

Создавать задачи можно и словами: попросите в чате «каждый будний день в 9:30 делай сводку коммитов в main за сутки, отдельной задачей». Приложение составит промпт и выберет вид задачи.

Триггеры по событиям

На вебе и в мобильном приложении на подходящих планах задача может запускаться не по времени, а по событию: новое письмо в Gmail, сообщение в выбранном канале Slack, активность в pull request на GitHub. Триггер решает, когда запускать, а сохранённый промпт — что делать. Совмещать событийные триггеры с расписанием по времени в одной задаче нельзя. В десктопном приложении, CLI и IDE событийных триггеров нет. GitLab в списке источников событий на октябрь 2026 года не значится.

Права фоновой задачи

Это самое важное в уроке. Задачи по расписанию работают без присмотра и с вашими настройками песочницы по умолчанию. Если политика организации разрешает, используется approval_policy = "never": спрашивать некого. Что это значит на практике:

Режим песочницы Что произойдёт
read-only Не сработают вызовы, которым нужна запись файлов, сеть или приложения на компьютере
workspace-write Не сработает запись вне рабочего каталога, сеть и приложения; отдельные команды можно разрешить через rules
full access Агент может менять файлы, запускать команды и ходить в сеть, ни о чём не спрашивая. Документация называет это повышенным риском

Рекомендация документации: начинать с самых узких прав, при которых задача выполняется, и выдавать сеть или широкий доступ к файлам, только когда без них никак. Если администратор запретил approval_policy = "never" через requirements.toml, задачи вернутся к поведению выбранного режима прав.

Для задач в Git-репозиториях выбирайте worktree. Задача в локальном режиме работает прямо в вашей рабочей копии и может изменить файлы, которые вы сейчас правите. Обратная сторона: частое расписание плодит worktree. Архивируйте ненужные запуски и не закрепляйте их без необходимости.

Сложную задачу не стоит описывать длинным промптом в расписании. Формула из гайда OpenAI по лучшим практикам: навык описывает метод, scheduled task — расписание. Поведение кладётся в навык, а задача только вызывает его:

text
Проверь мои коммиты за последние 24 часа и выполни $recent-code-bugfix.

В десктопном приложении навык явно вызывается в промпте задачи через $имя-навыка. Так задачу проще поддерживать и передавать коллегам: навык лежит в репозитории или в личных навыках, правится и проверяется отдельно. Как написать навык — урок «Пишем свой навык».

Сначала руками, потом по расписанию

Один из антипаттернов из того же гайда — ставить на расписание задачу, которая ещё не работает надёжно вручную. Порядок такой:

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

Для задачи внутри чата промпт должен быть «долгоживущим»: что делать при каждом запуске, как решить, есть ли что сообщать, когда остановиться или позвать вас.

И следите за моделями. 14 октября 2026 года GPT-5.5 вывели из Codex для входа через ChatGPT, и задачи, где она была выбрана явно, пришлось перенастраивать. Задача на устаревшей модели требует ручного обновления, поэтому раз в месяц просматривайте список.

Серверная альтернатива: расписание пайплайнов GitLab

Scheduled tasks в десктопе зависят от включённого компьютера, а веб-задачи не видят ваш GitLab. Для серверной регулярной работы в агентстве удобнее расписание пайплайнов: Build → Pipeline schedules и job, который запускается только по расписанию.

yaml · .gitlab-ci.yml
codex_weekly_deps:
  image: $CI_REGISTRY_IMAGE/php-node:8.3
  environment: { name: codex, action: prepare }
  rules:
    - if: '$CI_PIPELINE_SOURCE == "schedule" && $SCHEDULE_TASK == "weekly-deps"'
  script:
    - set -euo pipefail
    - npm install -g "@openai/codex@0.163.0"
    - composer outdated --direct --format=json > outdated.json || true
    - npm outdated --json > npm-outdated.json || true
    - |
      CODEX_API_KEY="$OPENAI_API_KEY" codex exec --ephemeral --sandbox read-only \
        "В outdated.json и npm-outdated.json — устаревшие зависимости проекта.
         Сгруппируй их: обновить срочно (известные проблемы безопасности,
         мажорные версии без поддержки), обновить планово, можно не трогать.
         Для каждой срочной укажи, какие места кода затронет обновление." \
        > deps-report.md
  artifacts:
    paths: [deps-report.md]
    expire_in: 30 days

Переменная SCHEDULE_TASK задаётся в настройках расписания и позволяет держать несколько регулярных задач в одном файле. Отчёт можно отправить дальше: в задачу трекера, в канал команды, в MR с обновлениями. Ключ и песочница настраиваются так же, как в уроке «Codex в GitLab CI».

Как выбрать: если задача про ваш личный рабочий день и локальные проекты — scheduled task в десктопе. Если про проект и команду, должна работать независимо от чьего-то ноутбука и видеть GitLab — расписание пайплайна.

Попробуйте сами

10–15 мин на рабочем месте
  1. Придумайте регулярную задачу на одну неделю: например, сводку коммитов в main по рабочим дням. Прогоните её промпт в обычном чате и доведите результат до читаемого вида.
  2. Поставьте её на расписание в десктопном приложении с режимом worktree и правами workspace-write. Через пару дней посмотрите запуски в Scheduled.
  3. Для серверной задачи заведите в тестовом проекте GitLab расписание пайплайна с переменной SCHEDULE_TASK и job из урока.

Коротко

  • Scheduled tasks создаются в десктопном приложении ChatGPT и на вебе. CLI и IDE расписанием не управляют.
  • Десктопные задачи работают с локальным проектом и требуют включённого компьютера. Веб-задачи не видят ваших папок.
  • Фоновые задачи работают без одобрений и с вашей песочницей по умолчанию: начинайте с узких прав и worktree.
  • Метод — в навыке, время — в расписании. Сначала задача должна надёжно работать вручную.
  • Для серверной регулярной работы с GitLab — расписание пайплайнов и codex exec.
Отметка хранится только в вашем браузере
Хотите связаться с владельцем
компании напрямую?
Дмитрий Тарасов
Дмитрий Тарасов
СЕО

НАПИСАТЬ

Написать в MAX